@moddable/pebbleproxy 0.1.0 → 0.1.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 +1 -1
- package/proxy.js +71 -16
package/package.json
CHANGED
package/proxy.js
CHANGED
|
@@ -20,13 +20,15 @@
|
|
|
20
20
|
|
|
21
21
|
console.log("moddable proxies launched");
|
|
22
22
|
|
|
23
|
+
const PROXY_VERSION = 1;
|
|
23
24
|
const HTTP_BASE = 15000;
|
|
25
|
+
const READY_MESSAGE = 15025;
|
|
24
26
|
const WS_BASE = 15050;
|
|
25
27
|
|
|
26
28
|
const gHTTPRequests = new Map;
|
|
27
29
|
const gWSRequests = new Map;
|
|
28
30
|
|
|
29
|
-
function
|
|
31
|
+
function appMessageReceived(e) {
|
|
30
32
|
if (state.log) {
|
|
31
33
|
console.log("moddable appmessage received");
|
|
32
34
|
|
|
@@ -49,7 +51,7 @@ function eventReceived(e) {
|
|
|
49
51
|
httpMessage(id, e);
|
|
50
52
|
}
|
|
51
53
|
catch (error) {
|
|
52
|
-
console.log("moddable
|
|
54
|
+
console.log("moddable proxy http exception" + error);
|
|
53
55
|
}
|
|
54
56
|
return true;
|
|
55
57
|
}
|
|
@@ -60,7 +62,7 @@ function eventReceived(e) {
|
|
|
60
62
|
wsMessage(id, e);
|
|
61
63
|
}
|
|
62
64
|
catch (error) {
|
|
63
|
-
console.log("moddable
|
|
65
|
+
console.log("moddable proxy ws exception" + error);
|
|
64
66
|
}
|
|
65
67
|
return true;
|
|
66
68
|
}
|
|
@@ -68,6 +70,14 @@ function eventReceived(e) {
|
|
|
68
70
|
return false;
|
|
69
71
|
};
|
|
70
72
|
|
|
73
|
+
function readyReceived(e) {
|
|
74
|
+
if (state.log)
|
|
75
|
+
console.log("readyReceived")
|
|
76
|
+
sendAppMessage({
|
|
77
|
+
[READY_MESSAGE]: PROXY_VERSION
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
71
81
|
function httpMessage(id, e) {
|
|
72
82
|
if (state.log)
|
|
73
83
|
console.log(" connection: " + id);
|
|
@@ -189,7 +199,7 @@ function httpMessage(id, e) {
|
|
|
189
199
|
}
|
|
190
200
|
request.xhr.onerror = function () {
|
|
191
201
|
console.log("ON error!!!!")
|
|
192
|
-
|
|
202
|
+
sendAppMessage({
|
|
193
203
|
[HTTP_BASE + 1]: request.id,
|
|
194
204
|
[HTTP_BASE + 9]: -1 // done. failure.
|
|
195
205
|
});
|
|
@@ -250,22 +260,22 @@ function wsMessage(id, e) {
|
|
|
250
260
|
request.ws = new WebSocket(url);
|
|
251
261
|
request.ws.binaryType = "arraybuffer";
|
|
252
262
|
|
|
253
|
-
request.ws.onopen =
|
|
263
|
+
request.ws.onopen = ( )=> {
|
|
254
264
|
if (state.log)
|
|
255
265
|
console.log("websocket connected to host");
|
|
256
266
|
request.state = "connected";
|
|
257
267
|
request.messages = [];
|
|
258
268
|
request.messages.sending = false;
|
|
259
|
-
|
|
269
|
+
sendAppMessage({
|
|
260
270
|
[WS_BASE + 1]: request.id,
|
|
261
271
|
[WS_BASE + 2]: 0 // connected. success.
|
|
262
272
|
});
|
|
263
273
|
};
|
|
264
|
-
request.ws.onerror =
|
|
274
|
+
request.ws.onerror = () => {
|
|
265
275
|
if (state.log)
|
|
266
276
|
console.log("websocket connection failed");
|
|
267
277
|
request.state = "error";
|
|
268
|
-
|
|
278
|
+
sendAppMessage({
|
|
269
279
|
[WS_BASE + 1]: request.id,
|
|
270
280
|
[WS_BASE + 3]: -1 // disconnected error.
|
|
271
281
|
});
|
|
@@ -283,11 +293,13 @@ function wsMessage(id, e) {
|
|
|
283
293
|
console.log(`close code ${code} reason ${arrayToString(reason)}`);
|
|
284
294
|
if (reason.byteLength)
|
|
285
295
|
bytes.set(arrayToUint8Array(reason.slice(2)), 2);
|
|
286
|
-
|
|
296
|
+
request.messages.push({
|
|
287
297
|
[WS_BASE + 1]: request.id,
|
|
288
298
|
[WS_BASE + 3]: 0, // disconnected clean.
|
|
289
299
|
[WS_BASE + 10]: Array.from(bytes) // sendAppMessage wants an Array
|
|
290
300
|
});
|
|
301
|
+
if (!request.messages.sending)
|
|
302
|
+
sendRequestMessage(request);
|
|
291
303
|
};
|
|
292
304
|
request.ws.onmessage = event => {
|
|
293
305
|
let data = event.data; // either ArrayBuffer or String
|
|
@@ -379,6 +391,47 @@ function wsMessage(id, e) {
|
|
|
379
391
|
}
|
|
380
392
|
}
|
|
381
393
|
|
|
394
|
+
const sendQueue = [];
|
|
395
|
+
let sending = false;
|
|
396
|
+
|
|
397
|
+
function sendAppMessageSuccess() {
|
|
398
|
+
// console.log("sendAppMessageSuccess");
|
|
399
|
+
sending = false;
|
|
400
|
+
const sent = sendQueue.shift();
|
|
401
|
+
if (sent.success)
|
|
402
|
+
sent.success();
|
|
403
|
+
if (!sending && sendQueue.length) {
|
|
404
|
+
// console.log("Send from success");
|
|
405
|
+
sending = true;
|
|
406
|
+
Pebble.sendAppMessage(sendQueue[0].message, sendAppMessageSuccess, sendAppMessageFailure);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
function sendAppMessageFailure() {
|
|
411
|
+
// console.log("sendAppMessageFailure");
|
|
412
|
+
sending = false;
|
|
413
|
+
const sent = sendQueue.shift();
|
|
414
|
+
if (sent.failure)
|
|
415
|
+
sent.failure();
|
|
416
|
+
if (!sending && sendQueue.length) {
|
|
417
|
+
// console.log("Send from failure");
|
|
418
|
+
sending = true;
|
|
419
|
+
Pebble.sendAppMessage(sendQueue[0].message, sendAppMessageSuccess, sendAppMessageFailure);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
function sendAppMessage(message, success, failure) {
|
|
424
|
+
// console.log("sendAppMessage");
|
|
425
|
+
sendQueue.push({message, success, failure});
|
|
426
|
+
if (sending)
|
|
427
|
+
return;
|
|
428
|
+
|
|
429
|
+
// console.log("Send initial");
|
|
430
|
+
sending = true;
|
|
431
|
+
Pebble.sendAppMessage(sendQueue[0].message, sendAppMessageSuccess, sendAppMessageFailure);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
|
|
382
435
|
function sendRequestMessage(request) {
|
|
383
436
|
if ("http" === request.kind)
|
|
384
437
|
sendRequestMessageHTTP(request);
|
|
@@ -390,7 +443,7 @@ function sendRequestMessage(request) {
|
|
|
390
443
|
|
|
391
444
|
function sendRequestMessageHTTP(request)
|
|
392
445
|
{
|
|
393
|
-
|
|
446
|
+
sendAppMessage(
|
|
394
447
|
request.messages.shift(),
|
|
395
448
|
function () {
|
|
396
449
|
if (request.messages.length)
|
|
@@ -399,9 +452,9 @@ function sendRequestMessageHTTP(request)
|
|
|
399
452
|
request.state = "done";
|
|
400
453
|
},
|
|
401
454
|
function () {
|
|
402
|
-
console.log("message send FAILED");
|
|
455
|
+
console.log("http message send FAILED");
|
|
403
456
|
|
|
404
|
-
|
|
457
|
+
sendAppMessage({
|
|
405
458
|
[HTTP_BASE + 1]: request.id,
|
|
406
459
|
[HTTP_BASE + 9]: -1 // done. failure.
|
|
407
460
|
});
|
|
@@ -410,7 +463,7 @@ function sendRequestMessageHTTP(request)
|
|
|
410
463
|
}
|
|
411
464
|
|
|
412
465
|
function sendRequestMessageWS(request) {
|
|
413
|
-
|
|
466
|
+
sendAppMessage(
|
|
414
467
|
request.messages.shift(),
|
|
415
468
|
function () {
|
|
416
469
|
if (request.messages.length)
|
|
@@ -419,9 +472,9 @@ function sendRequestMessageWS(request) {
|
|
|
419
472
|
request.messages.sending = false;
|
|
420
473
|
},
|
|
421
474
|
function (e) {
|
|
422
|
-
console.log("message send FAILED " + JSON.stringify(e));
|
|
475
|
+
console.log("ws message send FAILED " + JSON.stringify(e));
|
|
423
476
|
|
|
424
|
-
|
|
477
|
+
sendAppMessage({
|
|
425
478
|
[WS_BASE + 1]: request.id,
|
|
426
479
|
[WS_BASE + 3]: -1 // done. failure.
|
|
427
480
|
});
|
|
@@ -472,7 +525,9 @@ function stringToArray(str) {
|
|
|
472
525
|
}
|
|
473
526
|
|
|
474
527
|
const state = {
|
|
475
|
-
|
|
528
|
+
appMessageReceived,
|
|
529
|
+
readyReceived,
|
|
530
|
+
sendAppMessage,
|
|
476
531
|
log: false
|
|
477
532
|
};
|
|
478
533
|
|