tlsd 2.16.1 → 2.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tlsd",
3
- "version": "2.16.1",
3
+ "version": "2.16.3",
4
4
  "description": "A server for web app prototyping with HTTPS and Websockets",
5
5
  "main": "tlsd.js",
6
6
  "bin": {
@@ -95,7 +95,7 @@
95
95
 
96
96
  const waiting = new WaitList()
97
97
 
98
- const send = function(m, cb, fail) {
98
+ const send = async function(m, cb, fail) {
99
99
  if(m.msg_id === undefined) {
100
100
  m.msg_id = "CMID-" + next_seq(); // every message must have an id
101
101
  }
@@ -105,8 +105,24 @@
105
105
  waiting.ins( { msg: m, cb, fail }, m.msg_id );
106
106
  }
107
107
 
108
- DBG(">>--->", m );
109
- socket.send( o2j( m ) );
108
+ const MAX_WAIT_TIME = 10000; // 10 seconds
109
+ const startTime = Date.now();
110
+ while(socket.readyState !== WebSocket.OPEN) {
111
+ if(Date.now() - startTime >= MAX_WAIT_TIME) {
112
+ if(fail) fail("WebSocket connection timeout after " + MAX_WAIT_TIME + "ms");
113
+ return;
114
+ }
115
+ DBG("Waiting for socket to be open", socket.readyState, MAX_WAIT_TIME - (Date.now() - startTime));
116
+ await new Promise(resolve => setTimeout(resolve, 200));
117
+ }
118
+
119
+ try {
120
+ DBG(">>--->", m, socket.readyState );
121
+ socket.send( o2j( m ) );
122
+ } catch(error) {
123
+ DBG("Send error:", error);
124
+ if(fail) fail(error);
125
+ }
110
126
  }
111
127
 
112
128
  var loc = document.location