@dxos/network-manager 2.33.9-dev.7d11f506 → 2.33.9-dev.9bbef4e2

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.
Files changed (158) hide show
  1. package/dist/src/network-manager.blueprint-test.d.ts +3 -1
  2. package/dist/src/network-manager.blueprint-test.d.ts.map +1 -1
  3. package/dist/src/network-manager.blueprint-test.js +46 -17
  4. package/dist/src/network-manager.blueprint-test.js.map +1 -1
  5. package/dist/src/network-manager.browser-test.js +1 -1
  6. package/dist/src/network-manager.browser-test.js.map +1 -1
  7. package/dist/src/network-manager.d.ts.map +1 -1
  8. package/dist/src/network-manager.js +13 -12
  9. package/dist/src/network-manager.js.map +1 -1
  10. package/dist/src/network-manager.test.js +5 -4
  11. package/dist/src/network-manager.test.js.map +1 -1
  12. package/dist/src/proto/gen/dxos/credentials.d.ts +39 -0
  13. package/dist/src/proto/gen/dxos/credentials.d.ts.map +1 -1
  14. package/dist/src/proto/gen/dxos/halo/keys.d.ts +44 -2
  15. package/dist/src/proto/gen/dxos/halo/keys.d.ts.map +1 -1
  16. package/dist/src/proto/gen/dxos/halo/keys.js +4 -0
  17. package/dist/src/proto/gen/dxos/halo/keys.js.map +1 -1
  18. package/dist/src/proto/gen/dxos/mesh/signal.d.ts +74 -16
  19. package/dist/src/proto/gen/dxos/mesh/signal.d.ts.map +1 -1
  20. package/dist/src/proto/gen/dxos/mesh/signalMessage.d.ts +79 -0
  21. package/dist/src/proto/gen/dxos/mesh/signalMessage.d.ts.map +1 -0
  22. package/dist/src/proto/gen/dxos/mesh/signalMessage.js +3 -0
  23. package/dist/src/proto/gen/dxos/mesh/signalMessage.js.map +1 -0
  24. package/dist/src/proto/gen/google/protobuf.d.ts +8 -2
  25. package/dist/src/proto/gen/google/protobuf.d.ts.map +1 -1
  26. package/dist/src/proto/gen/index.d.ts +17 -4
  27. package/dist/src/proto/gen/index.d.ts.map +1 -1
  28. package/dist/src/proto/gen/index.js +1 -1
  29. package/dist/src/proto/gen/index.js.map +1 -1
  30. package/dist/src/proto/substitutions.d.ts +4 -0
  31. package/dist/src/proto/substitutions.d.ts.map +1 -1
  32. package/dist/src/proto/substitutions.js +3 -1
  33. package/dist/src/proto/substitutions.js.map +1 -1
  34. package/dist/src/protocol-factory.js +3 -3
  35. package/dist/src/protocol-factory.js.map +1 -1
  36. package/dist/src/signal/in-memory-signal-manager.d.ts +7 -7
  37. package/dist/src/signal/in-memory-signal-manager.d.ts.map +1 -1
  38. package/dist/src/signal/in-memory-signal-manager.js +34 -13
  39. package/dist/src/signal/in-memory-signal-manager.js.map +1 -1
  40. package/dist/src/signal/index.d.ts +1 -2
  41. package/dist/src/signal/index.d.ts.map +1 -1
  42. package/dist/src/signal/index.js +1 -2
  43. package/dist/src/signal/index.js.map +1 -1
  44. package/dist/src/signal/integration.test.d.ts +2 -0
  45. package/dist/src/signal/integration.test.d.ts.map +1 -0
  46. package/dist/src/signal/integration.test.js +102 -0
  47. package/dist/src/signal/integration.test.js.map +1 -0
  48. package/dist/src/signal/message-router.d.ts +20 -8
  49. package/dist/src/signal/message-router.d.ts.map +1 -1
  50. package/dist/src/signal/message-router.js +96 -17
  51. package/dist/src/signal/message-router.js.map +1 -1
  52. package/dist/src/signal/message-router.test.js +125 -22
  53. package/dist/src/signal/message-router.test.js.map +1 -1
  54. package/dist/src/signal/signal-client.d.ts +33 -17
  55. package/dist/src/signal/signal-client.d.ts.map +1 -1
  56. package/dist/src/signal/signal-client.js +102 -82
  57. package/dist/src/signal/signal-client.js.map +1 -1
  58. package/dist/src/signal/signal-client.test.js +60 -75
  59. package/dist/src/signal/signal-client.test.js.map +1 -1
  60. package/dist/src/signal/{websocket-signal-manager.d.ts → signal-manager-impl.d.ts} +13 -11
  61. package/dist/src/signal/signal-manager-impl.d.ts.map +1 -0
  62. package/dist/src/signal/signal-manager-impl.js +151 -0
  63. package/dist/src/signal/signal-manager-impl.js.map +1 -0
  64. package/dist/src/signal/signal-manager.d.ts +12 -11
  65. package/dist/src/signal/signal-manager.d.ts.map +1 -1
  66. package/dist/src/signal/signal-rpc-client.d.ts +19 -0
  67. package/dist/src/signal/signal-rpc-client.d.ts.map +1 -0
  68. package/dist/src/signal/signal-rpc-client.js +108 -0
  69. package/dist/src/signal/signal-rpc-client.js.map +1 -0
  70. package/dist/src/signal/signal-rpc-client.test.d.ts +2 -0
  71. package/dist/src/signal/signal-rpc-client.test.d.ts.map +1 -0
  72. package/dist/src/signal/signal-rpc-client.test.js +74 -0
  73. package/dist/src/signal/signal-rpc-client.test.js.map +1 -0
  74. package/dist/src/swarm/connection.d.ts +3 -3
  75. package/dist/src/swarm/connection.d.ts.map +1 -1
  76. package/dist/src/swarm/connection.js +8 -11
  77. package/dist/src/swarm/connection.js.map +1 -1
  78. package/dist/src/swarm/swarm.d.ts +6 -7
  79. package/dist/src/swarm/swarm.d.ts.map +1 -1
  80. package/dist/src/swarm/swarm.js +29 -25
  81. package/dist/src/swarm/swarm.js.map +1 -1
  82. package/dist/src/swarm/swarm.test.js +156 -115
  83. package/dist/src/swarm/swarm.test.js.map +1 -1
  84. package/dist/src/testing/test-protocol.d.ts.map +1 -1
  85. package/dist/src/testing/test-protocol.js +3 -3
  86. package/dist/src/testing/test-protocol.js.map +1 -1
  87. package/dist/src/topology/fully-connected-topology.d.ts +0 -1
  88. package/dist/src/topology/fully-connected-topology.d.ts.map +1 -1
  89. package/dist/src/topology/fully-connected-topology.js +4 -9
  90. package/dist/src/topology/fully-connected-topology.js.map +1 -1
  91. package/dist/src/topology/mmst-topology.d.ts +0 -1
  92. package/dist/src/topology/mmst-topology.d.ts.map +1 -1
  93. package/dist/src/topology/mmst-topology.js +6 -11
  94. package/dist/src/topology/mmst-topology.js.map +1 -1
  95. package/dist/src/topology/star-topology.d.ts +0 -1
  96. package/dist/src/topology/star-topology.d.ts.map +1 -1
  97. package/dist/src/topology/star-topology.js +5 -10
  98. package/dist/src/topology/star-topology.js.map +1 -1
  99. package/dist/src/topology/topology.d.ts +0 -6
  100. package/dist/src/topology/topology.d.ts.map +1 -1
  101. package/dist/src/transport/in-memory-transport.d.ts +2 -2
  102. package/dist/src/transport/in-memory-transport.d.ts.map +1 -1
  103. package/dist/src/transport/in-memory-transport.js +2 -2
  104. package/dist/src/transport/in-memory-transport.js.map +1 -1
  105. package/dist/src/transport/transport.d.ts +3 -3
  106. package/dist/src/transport/transport.d.ts.map +1 -1
  107. package/dist/src/transport/webrtc-transport.d.ts +3 -3
  108. package/dist/src/transport/webrtc-transport.d.ts.map +1 -1
  109. package/dist/src/transport/webrtc-transport.js +3 -3
  110. package/dist/src/transport/webrtc-transport.js.map +1 -1
  111. package/dist/tests-setup.js +1 -1
  112. package/dist/tsconfig.tsbuildinfo +1 -1
  113. package/package.json +17 -12
  114. package/src/network-manager.blueprint-test.ts +57 -22
  115. package/src/network-manager.browser-test.ts +1 -1
  116. package/src/network-manager.test.ts +8 -7
  117. package/src/network-manager.ts +10 -10
  118. package/src/proto/defs/dxos/mesh/signal.proto +54 -23
  119. package/src/proto/defs/dxos/mesh/signalMessage.proto +51 -0
  120. package/src/proto/gen/dxos/credentials.ts +40 -0
  121. package/src/proto/gen/dxos/halo/keys.ts +45 -2
  122. package/src/proto/gen/dxos/mesh/signal.ts +73 -16
  123. package/src/proto/gen/dxos/mesh/signalMessage.ts +83 -0
  124. package/src/proto/gen/google/protobuf.ts +9 -2
  125. package/src/proto/gen/index.ts +18 -5
  126. package/src/proto/substitutions.ts +3 -1
  127. package/src/protocol-factory.ts +1 -1
  128. package/src/signal/in-memory-signal-manager.ts +38 -13
  129. package/src/signal/index.ts +1 -2
  130. package/src/signal/integration.test.ts +117 -0
  131. package/src/signal/message-router.test.ts +169 -58
  132. package/src/signal/message-router.ts +120 -27
  133. package/src/signal/signal-client.test.ts +70 -90
  134. package/src/signal/signal-client.ts +120 -87
  135. package/src/signal/signal-manager-impl.ts +166 -0
  136. package/src/signal/signal-manager.ts +12 -12
  137. package/src/signal/signal-rpc-client.test.ts +86 -0
  138. package/src/signal/signal-rpc-client.ts +121 -0
  139. package/src/swarm/connection.ts +6 -9
  140. package/src/swarm/swarm.test.ts +208 -167
  141. package/src/swarm/swarm.ts +26 -22
  142. package/src/testing/test-protocol.ts +1 -1
  143. package/src/topology/fully-connected-topology.ts +2 -10
  144. package/src/topology/mmst-topology.ts +2 -10
  145. package/src/topology/star-topology.ts +2 -8
  146. package/src/topology/topology.ts +0 -7
  147. package/src/transport/in-memory-transport.ts +3 -3
  148. package/src/transport/transport.ts +3 -3
  149. package/src/transport/webrtc-transport.ts +4 -4
  150. package/dist/src/signal/websocket-rpc.d.ts +0 -30
  151. package/dist/src/signal/websocket-rpc.d.ts.map +0 -1
  152. package/dist/src/signal/websocket-rpc.js +0 -203
  153. package/dist/src/signal/websocket-rpc.js.map +0 -1
  154. package/dist/src/signal/websocket-signal-manager.d.ts.map +0 -1
  155. package/dist/src/signal/websocket-signal-manager.js +0 -134
  156. package/dist/src/signal/websocket-signal-manager.js.map +0 -1
  157. package/src/signal/websocket-rpc.ts +0 -208
  158. package/src/signal/websocket-signal-manager.ts +0 -158
@@ -1,13 +1,33 @@
1
1
  import { Event } from '@dxos/async';
2
2
  import { PublicKey } from '@dxos/protocols';
3
- import { Answer, Message } from '../proto/gen/dxos/mesh/signal';
3
+ import { SwarmEvent } from '../proto/gen/dxos/mesh/signal';
4
+ import { SignalMessage } from '../proto/gen/dxos/mesh/signalMessage';
4
5
  import { SignalApi } from './signal-api';
6
+ declare enum State {
7
+ /** Connection is being established. */
8
+ CONNECTING = "CONNECTING",
9
+ /** Connection is being re-established. */
10
+ RE_CONNECTING = "RE_CONNECTING",
11
+ /** Connected. */
12
+ CONNECTED = "CONNECTED",
13
+ /** Server terminated the connection. Socket will be reconnected. */
14
+ DISCONNECTED = "DISCONNECTED",
15
+ /** Socket was closed. */
16
+ CLOSED = "CLOSED"
17
+ }
18
+ export declare type Status = {
19
+ host: string;
20
+ state: State;
21
+ error?: string;
22
+ reconnectIn: number;
23
+ connectionStarted: number;
24
+ lastStateChange: number;
25
+ };
5
26
  /**
6
27
  * Establishes a websocket connection to signal server and provides RPC methods.
7
28
  */
8
29
  export declare class SignalClient {
9
30
  private readonly _host;
10
- private readonly _onOffer;
11
31
  private readonly _onSignal;
12
32
  private _state;
13
33
  private _lastError?;
@@ -25,31 +45,27 @@ export declare class SignalClient {
25
45
  private _lastStateChange;
26
46
  private _reconnectIntervalId?;
27
47
  private _client;
28
- private _clientCleanup;
29
- readonly statusChanged: Event<SignalApi.Status>;
48
+ private _cleanupSubscriptions;
49
+ readonly statusChanged: Event<Status>;
30
50
  readonly commandTrace: Event<SignalApi.CommandTrace>;
51
+ readonly swarmEvent: Event<[topic: PublicKey, swarmEvent: SwarmEvent]>;
52
+ private readonly _swarmStreams;
53
+ private readonly _messageStreams;
31
54
  /**
32
55
  * @param _host Signal server websocket URL.
33
- * @param _onOffer See `SignalApi.offer`.
34
56
  * @param _onSignal See `SignalApi.signal`.
35
57
  */
36
- constructor(_host: string, _onOffer: (message: Message) => Promise<Answer>, _onSignal: (message: Message) => Promise<void>);
58
+ constructor(_host: string, _onSignal: (message: SignalMessage) => Promise<void>);
37
59
  private _setState;
38
60
  private _createClient;
39
61
  private _reconnect;
40
62
  close(): Promise<void>;
41
63
  getStatus(): SignalApi.Status;
42
- join(topic: PublicKey, peerId: PublicKey): Promise<PublicKey[]>;
64
+ join(topic: PublicKey, peerId: PublicKey): Promise<void>;
43
65
  leave(topic: PublicKey, peerId: PublicKey): Promise<void>;
44
- lookup(topic: PublicKey): Promise<PublicKey[]>;
45
- /**
46
- * Routes an offer to the other peer's _onOffer callback.
47
- * @returns Other peer's _onOffer callback return value.
48
- */
49
- offer(msg: Message): Promise<Answer>;
50
- /**
51
- * Routes an offer to the other peer's _onSignal callback.
52
- */
53
- signal(payload: Message): Promise<void>;
66
+ signal(message: SignalMessage): Promise<void>;
67
+ private _subscribeSwarmEvents;
68
+ private _subscribeMessages;
54
69
  }
70
+ export {};
55
71
  //# sourceMappingURL=signal-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-client.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC;;GAEG;AACH,qBAAa,YAAY;IAmCrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IApC5B,OAAO,CAAC,MAAM,CAA8B;IAE5C,OAAO,CAAC,UAAU,CAAC,CAAQ;IAE3B;;OAEG;IACH,OAAO,CAAC,eAAe,CAA6B;IAEpD;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAc;IAExC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAc;IAEtC,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,cAAc,CAAsB;IAE5C,QAAQ,CAAC,aAAa,0BAAiC;IACvD,QAAQ,CAAC,YAAY,gCAAuC;IAE5D;;;;OAIG;gBAEgB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,EAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;IAMjE,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,aAAa;IAuErB,OAAO,CAAC,UAAU;IAuBZ,KAAK;IAYX,SAAS,IAAK,SAAS,CAAC,MAAM;IAWxB,IAAI,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQhE,KAAK,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,MAAM,CAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAOrD;;;OAGG;IACG,KAAK,CAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3C;;OAEG;IACG,MAAM,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAS/C"}
1
+ {"version":3,"file":"signal-client.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAW,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,aAAK,KAAK;IACR,uCAAuC;IACvC,UAAU,eAAe;IAEzB,0CAA0C;IAC1C,aAAa,kBAAkB;IAE/B,iBAAiB;IACjB,SAAS,cAAc;IAEvB,oEAAoE;IACpE,YAAY,iBAAiB;IAE7B,yBAAyB;IACzB,MAAM,WAAW;CAClB;AAED,oBAAY,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;GAEG;AACH,qBAAa,YAAY;IAqCrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IArC5B,OAAO,CAAC,MAAM,CAAoB;IAElC,OAAO,CAAC,UAAU,CAAC,CAAQ;IAE3B;;OAEG;IACH,OAAO,CAAC,eAAe,CAA6B;IAEpD;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAc;IAExC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAc;IAEtC,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO,CAAC,qBAAqB,CAA2B;IACxD,QAAQ,CAAC,aAAa,gBAAuB;IAE7C,QAAQ,CAAC,YAAY,gCAAuC;IAC5D,QAAQ,CAAC,UAAU,oDAA2D;IAE9E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqE;IACnG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkE;IAClG;;;OAGG;gBAEgB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC;IAMvE,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,aAAa;IAoDrB,OAAO,CAAC,UAAU;IAuBZ,KAAK;IAYX,SAAS,IAAK,SAAS,CAAC,MAAM;IAWxB,IAAI,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,KAAK,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAStC,qBAAqB;YAkBrB,kBAAkB;CAyBjC"}
@@ -2,32 +2,50 @@
2
2
  //
3
3
  // Copyright 2020 DXOS.org
4
4
  //
5
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
6
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
5
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
6
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
7
13
  };
8
14
  Object.defineProperty(exports, "__esModule", { value: true });
9
15
  exports.SignalClient = void 0;
16
+ const assert_1 = __importDefault(require("assert"));
10
17
  const debug_1 = __importDefault(require("debug"));
11
18
  const async_1 = require("@dxos/async");
12
- const protocols_1 = require("@dxos/protocols");
13
- const signal_api_1 = require("./signal-api");
14
- const websocket_rpc_1 = require("./websocket-rpc");
19
+ const util_1 = require("@dxos/util");
20
+ const gen_1 = require("../proto/gen");
21
+ const signal_rpc_client_1 = require("./signal-rpc-client");
15
22
  const log = (0, debug_1.default)('dxos:network-manager:signal-client');
16
23
  const DEFAULT_RECONNECT_TIMEOUT = 1000;
24
+ var State;
25
+ (function (State) {
26
+ /** Connection is being established. */
27
+ State["CONNECTING"] = "CONNECTING";
28
+ /** Connection is being re-established. */
29
+ State["RE_CONNECTING"] = "RE_CONNECTING";
30
+ /** Connected. */
31
+ State["CONNECTED"] = "CONNECTED";
32
+ /** Server terminated the connection. Socket will be reconnected. */
33
+ State["DISCONNECTED"] = "DISCONNECTED";
34
+ /** Socket was closed. */
35
+ State["CLOSED"] = "CLOSED";
36
+ })(State || (State = {}));
17
37
  /**
18
38
  * Establishes a websocket connection to signal server and provides RPC methods.
19
39
  */
20
40
  class SignalClient {
21
41
  /**
22
42
  * @param _host Signal server websocket URL.
23
- * @param _onOffer See `SignalApi.offer`.
24
43
  * @param _onSignal See `SignalApi.signal`.
25
44
  */
26
- constructor(_host, _onOffer, _onSignal) {
45
+ constructor(_host, _onSignal) {
27
46
  this._host = _host;
28
- this._onOffer = _onOffer;
29
47
  this._onSignal = _onSignal;
30
- this._state = signal_api_1.SignalApi.State.CONNECTING;
48
+ this._state = State.CONNECTING;
31
49
  /**
32
50
  * Number of milliseconds after which the connection will be attempted again in case of error.
33
51
  */
@@ -40,10 +58,13 @@ class SignalClient {
40
58
  * Timestamp of last state change.
41
59
  */
42
60
  this._lastStateChange = Date.now();
43
- this._clientCleanup = [];
61
+ this._cleanupSubscriptions = new util_1.SubscriptionGroup();
44
62
  this.statusChanged = new async_1.Event();
45
63
  this.commandTrace = new async_1.Event();
46
- this._setState(signal_api_1.SignalApi.State.CONNECTING);
64
+ this.swarmEvent = new async_1.Event();
65
+ this._swarmStreams = new util_1.ComplexMap(key => key.toHex());
66
+ this._messageStreams = new util_1.ComplexMap(key => key.toHex());
67
+ this._setState(State.CONNECTING);
47
68
  this._createClient();
48
69
  }
49
70
  _setState(newState) {
@@ -55,88 +76,72 @@ class SignalClient {
55
76
  _createClient() {
56
77
  this._connectionStarted = Date.now();
57
78
  try {
58
- this._client = new websocket_rpc_1.WebsocketRpc(this._host);
79
+ this._client = new signal_rpc_client_1.SignalRPCClient(this._host);
59
80
  }
60
81
  catch (error) {
61
- if (this._state === signal_api_1.SignalApi.State.RE_CONNECTING) {
82
+ if (this._state === State.RE_CONNECTING) {
62
83
  this._reconnectAfter *= 2;
63
84
  }
64
85
  this._lastError = error;
65
- this._setState(signal_api_1.SignalApi.State.DISCONNECTED);
86
+ this._setState(State.DISCONNECTED);
66
87
  this._reconnect();
67
88
  }
68
- this._client.addHandler('offer', (message) => this._onOffer({
69
- id: protocols_1.PublicKey.from(message.id),
70
- remoteId: protocols_1.PublicKey.from(message.remoteId),
71
- topic: protocols_1.PublicKey.from(message.topic),
72
- sessionId: protocols_1.PublicKey.from(message.sessionId),
73
- data: message.data
74
- }));
75
- this._client.subscribe('signal', (msg) => this._onSignal({
76
- id: protocols_1.PublicKey.from(msg.id),
77
- remoteId: protocols_1.PublicKey.from(msg.remoteId),
78
- topic: protocols_1.PublicKey.from(msg.topic),
79
- sessionId: protocols_1.PublicKey.from(msg.sessionId),
80
- data: msg.data
81
- }));
82
- this._clientCleanup.push(this._client.connected.on(() => {
83
- log('Socket connected');
89
+ this._cleanupSubscriptions.push(this._client.connected.on(() => {
84
90
  this._lastError = undefined;
85
91
  this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;
86
- this._setState(signal_api_1.SignalApi.State.CONNECTED);
92
+ this._setState(State.CONNECTED);
87
93
  }));
88
- this._clientCleanup.push(this._client.error.on(error => {
94
+ this._cleanupSubscriptions.push(this._client.error.on(error => {
89
95
  log(`Socket error: ${error.message}`);
90
- if (this._state === signal_api_1.SignalApi.State.CLOSED) {
96
+ if (this._state === State.CLOSED) {
91
97
  return;
92
98
  }
93
- if (this._state === signal_api_1.SignalApi.State.RE_CONNECTING) {
99
+ if (this._state === State.RE_CONNECTING) {
94
100
  this._reconnectAfter *= 2;
95
101
  }
96
102
  this._lastError = error;
97
- this._setState(signal_api_1.SignalApi.State.DISCONNECTED);
103
+ this._setState(State.DISCONNECTED);
98
104
  this._reconnect();
99
105
  }));
100
- this._clientCleanup.push(this._client.disconnected.on(() => {
106
+ this._cleanupSubscriptions.push(this._client.disconnected.on(() => {
101
107
  log('Socket disconnected');
102
108
  // This is also called in case of error, but we already have disconnected the socket on error, so no need to do anything here.
103
- if (this._state !== signal_api_1.SignalApi.State.CONNECTING && this._state !== signal_api_1.SignalApi.State.RE_CONNECTING) {
109
+ if (this._state !== State.CONNECTING && this._state !== State.RE_CONNECTING) {
104
110
  return;
105
111
  }
106
- if (this._state === signal_api_1.SignalApi.State.RE_CONNECTING) {
112
+ if (this._state === State.RE_CONNECTING) {
107
113
  this._reconnectAfter *= 2;
108
114
  }
109
- this._setState(signal_api_1.SignalApi.State.DISCONNECTED);
115
+ this._setState(State.DISCONNECTED);
110
116
  this._reconnect();
111
117
  }));
112
- this._clientCleanup.push(this._client.commandTrace.on(trace => this.commandTrace.emit(trace)));
113
118
  }
114
119
  _reconnect() {
120
+ log(`Reconnecting in ${this._reconnectAfter}ms`);
115
121
  if (this._reconnectIntervalId !== undefined) {
116
122
  console.error('Signal api already reconnecting.');
117
123
  return;
118
124
  }
119
- if (this._state === signal_api_1.SignalApi.State.CLOSED) {
125
+ if (this._state === State.CLOSED) {
120
126
  return;
121
127
  }
122
128
  this._reconnectIntervalId = setTimeout(() => {
123
129
  this._reconnectIntervalId = undefined;
124
- this._clientCleanup.forEach(cb => cb());
125
- this._clientCleanup = [];
130
+ this._cleanupSubscriptions.unsubscribe();
126
131
  // Close client if it wasn't already closed.
127
132
  this._client.close().catch(() => { });
128
- this._setState(signal_api_1.SignalApi.State.RE_CONNECTING);
133
+ this._setState(State.RE_CONNECTING);
129
134
  this._createClient();
130
135
  }, this._reconnectAfter);
131
136
  }
132
137
  async close() {
133
- this._clientCleanup.forEach(cb => cb());
134
- this._clientCleanup = [];
138
+ this._cleanupSubscriptions.unsubscribe();
135
139
  if (this._reconnectIntervalId !== undefined) {
136
140
  clearTimeout(this._reconnectIntervalId);
137
141
  }
138
142
  await this._client.close();
139
- this._setState(signal_api_1.SignalApi.State.CLOSED);
143
+ this._setState(State.CLOSED);
144
+ log('Closed.');
140
145
  }
141
146
  getStatus() {
142
147
  var _a;
@@ -150,51 +155,66 @@ class SignalClient {
150
155
  };
151
156
  }
152
157
  async join(topic, peerId) {
153
- const peers = await this._client.call('join', {
154
- id: peerId.asBuffer(),
155
- topic: topic.asBuffer()
156
- });
157
- return peers.map(id => protocols_1.PublicKey.from(id));
158
+ log(`Join: topic=${topic} peerId=${peerId}`);
159
+ await this._subscribeMessages(peerId);
160
+ await this._subscribeSwarmEvents(topic, peerId);
158
161
  }
159
162
  async leave(topic, peerId) {
160
- await this._client.call('leave', {
161
- id: peerId.asBuffer(),
162
- topic: topic.asBuffer()
163
- });
163
+ var _a, _b;
164
+ log(`Leave: topic=${topic} peerId=${peerId}`);
165
+ (_a = this._swarmStreams.get(topic)) === null || _a === void 0 ? void 0 : _a.close();
166
+ this._swarmStreams.delete(topic);
167
+ (_b = this._messageStreams.get(topic)) === null || _b === void 0 ? void 0 : _b.close();
168
+ this._messageStreams.delete(topic);
164
169
  }
165
- async lookup(topic) {
166
- const peers = await this._client.call('lookup', {
167
- topic: topic.asBuffer()
168
- });
169
- return peers.map(id => protocols_1.PublicKey.from(id));
170
+ async signal(message) {
171
+ const payload = {
172
+ type_url: 'dxos.mesh.signalMessage.SignalMessage',
173
+ value: gen_1.schema.getCodecForType('dxos.mesh.signalMessage.SignalMessage').encode(message)
174
+ };
175
+ return this._client.sendMessage(message.id, message.remoteId, payload);
170
176
  }
171
- /**
172
- * Routes an offer to the other peer's _onOffer callback.
173
- * @returns Other peer's _onOffer callback return value.
174
- */
175
- async offer(msg) {
176
- var _a, _b, _c, _d;
177
- return this._client.call('offer', {
178
- id: (_a = msg.id) === null || _a === void 0 ? void 0 : _a.asBuffer(),
179
- remoteId: (_b = msg.remoteId) === null || _b === void 0 ? void 0 : _b.asBuffer(),
180
- topic: (_c = msg.topic) === null || _c === void 0 ? void 0 : _c.asBuffer(),
181
- sessionId: (_d = msg.sessionId) === null || _d === void 0 ? void 0 : _d.asBuffer(),
182
- data: msg.data
177
+ async _subscribeSwarmEvents(topic, peerId) {
178
+ (0, assert_1.default)(!this._swarmStreams.has(topic));
179
+ const swarmStream = await this._client.join(topic, peerId);
180
+ // Subscribing to swarm events.
181
+ // TODO(mykola): What happens when the swarm stream is closed? Maybe send leave event for each peer?
182
+ swarmStream.subscribe((swarmEvent) => {
183
+ this.swarmEvent.emit([topic, swarmEvent]);
184
+ });
185
+ // Saving swarm stream.
186
+ this._swarmStreams.set(topic, swarmStream);
187
+ this._cleanupSubscriptions.push(() => {
188
+ swarmStream.close();
189
+ this._swarmStreams.delete(topic);
183
190
  });
184
191
  }
185
- /**
186
- * Routes an offer to the other peer's _onSignal callback.
187
- */
188
- async signal(payload) {
189
- var _a, _b, _c, _d;
190
- return this._client.emit('signal', {
191
- id: (_a = payload.id) === null || _a === void 0 ? void 0 : _a.asBuffer(),
192
- remoteId: (_b = payload.remoteId) === null || _b === void 0 ? void 0 : _b.asBuffer(),
193
- topic: (_c = payload.topic) === null || _c === void 0 ? void 0 : _c.asBuffer(),
194
- sessionId: (_d = payload.sessionId) === null || _d === void 0 ? void 0 : _d.asBuffer(),
195
- data: payload.data
192
+ async _subscribeMessages(peerId) {
193
+ // Subscribing to messages.
194
+ const messageStream = await this._client.receiveMessages(peerId);
195
+ messageStream.subscribe(async (message) => {
196
+ if (message.payload.type_url === 'dxos.mesh.signalMessage.SignalMessage') {
197
+ const signalMessage = gen_1.schema.getCodecForType('dxos.mesh.signalMessage.SignalMessage').decode(message.payload.value);
198
+ log('Message received: ' + JSON.stringify(signalMessage));
199
+ (0, assert_1.default)(signalMessage.remoteId.equals(peerId));
200
+ await this._onSignal(signalMessage);
201
+ }
202
+ else {
203
+ log('Unknown message type: ' + message.payload.type_url);
204
+ }
205
+ });
206
+ // Saving message stream.
207
+ if (!this._messageStreams.has(peerId)) {
208
+ this._messageStreams.set(peerId, messageStream);
209
+ }
210
+ this._cleanupSubscriptions.push(() => {
211
+ messageStream.close();
212
+ this._messageStreams.delete(peerId);
196
213
  });
197
214
  }
198
215
  }
216
+ __decorate([
217
+ async_1.synchronized
218
+ ], SignalClient.prototype, "_subscribeSwarmEvents", null);
199
219
  exports.SignalClient = SignalClient;
200
220
  //# sourceMappingURL=signal-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-client.js","sourceRoot":"","sources":["../../../src/signal/signal-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal-client.js","sourceRoot":"","sources":["../../../src/signal/signal-client.ts"],"names":[],"mappings":"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"}
@@ -12,40 +12,29 @@ const wait_for_expect_1 = __importDefault(require("wait-for-expect"));
12
12
  const async_1 = require("@dxos/async");
13
13
  const protocols_1 = require("@dxos/protocols");
14
14
  const signal_1 = require("@dxos/signal");
15
- const util_1 = require("@dxos/util");
15
+ const testutils_1 = require("@dxos/testutils");
16
16
  const signal_client_1 = require("./signal-client");
17
- (0, mocha_1.describe)('SignalApi', () => {
18
- let topic;
19
- let peer1;
20
- let peer2;
21
- let api1;
22
- let api2;
17
+ (0, mocha_1.describe)('SignalClient', () => {
23
18
  let broker1;
24
- const signalApiPort1 = (0, util_1.randomInt)(10000, 50000);
25
- const signalApiUrl1 = 'http://0.0.0.0:' + signalApiPort1;
26
- // code let broker2: ReturnType<typeof createBroker>;
27
- const signalApiPort2 = (0, util_1.randomInt)(10000, 50000);
28
- const signalApiUrl2 = 'http://0.0.0.0:' + signalApiPort2;
19
+ let broker2;
29
20
  before(async () => {
30
- broker1 = await (0, signal_1.createTestBroker)(signalApiPort1);
31
- // broker2 = await createTestBroker(signalApiPort2);
21
+ broker1 = await (0, signal_1.createTestBroker)();
22
+ // broker2 = await await createTestBroker(signalApiPort2);
32
23
  });
33
- beforeEach(() => {
34
- topic = protocols_1.PublicKey.random();
35
- peer1 = protocols_1.PublicKey.random();
36
- peer2 = protocols_1.PublicKey.random();
37
- });
38
- after(async function () {
39
- this.timeout(0);
40
- await api1.close();
41
- await broker1.stop();
24
+ after(() => {
25
+ broker1.stop();
42
26
  // code await broker2.stop();
43
27
  });
44
28
  (0, mocha_1.it)('message between 2 clients', async () => {
29
+ const topic = protocols_1.PublicKey.random();
30
+ const peer1 = protocols_1.PublicKey.random();
31
+ const peer2 = protocols_1.PublicKey.random();
45
32
  const signalMock1 = (0, earljs_1.mockFn)()
46
33
  .resolvesTo();
47
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), signalMock1);
48
- api2 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), (async () => { }));
34
+ const api1 = new signal_client_1.SignalClient(broker1.url(), signalMock1);
35
+ (0, testutils_1.afterTest)(() => api1.close());
36
+ const api2 = new signal_client_1.SignalClient(broker1.url(), (async () => { }));
37
+ (0, testutils_1.afterTest)(() => api2.close());
49
38
  await api1.join(topic, peer1);
50
39
  await api2.join(topic, peer2);
51
40
  const msg = {
@@ -53,88 +42,84 @@ const signal_client_1 = require("./signal-client");
53
42
  remoteId: peer1,
54
43
  sessionId: protocols_1.PublicKey.random(),
55
44
  topic,
56
- data: { signal: { json: "foo: 'bar'" } }
45
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
57
46
  };
58
47
  await api2.signal(msg);
59
48
  await (0, wait_for_expect_1.default)(() => {
60
49
  (0, earljs_1.expect)(signalMock1).toHaveBeenCalledWith([msg]);
61
50
  }, 4000);
62
- }).timeout(5000);
51
+ }).timeout(500);
63
52
  (0, mocha_1.it)('join', async () => {
64
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), async () => { });
65
- const join = await api1.join(topic, peer1);
66
- (0, earljs_1.expect)(join).toEqual([peer1]);
67
- const join2 = await api1.join(topic, peer2);
68
- (0, earljs_1.expect)(join2).toEqual([peer1, peer2]);
69
- }).timeout(1000);
70
- (0, mocha_1.it)('offer', async () => {
71
- const offerMock = (0, earljs_1.mockFn)()
72
- .resolvesTo({ accept: true });
73
- api1 = new signal_client_1.SignalClient(signalApiUrl1, offerMock, async () => { });
53
+ const topic = protocols_1.PublicKey.random();
54
+ const peer1 = protocols_1.PublicKey.random();
55
+ const peer2 = protocols_1.PublicKey.random();
56
+ const api1 = new signal_client_1.SignalClient(broker1.url(), async () => { });
57
+ (0, testutils_1.afterTest)(() => api1.close());
58
+ const api2 = new signal_client_1.SignalClient(broker1.url(), async () => { });
59
+ (0, testutils_1.afterTest)(() => api2.close());
60
+ const promise1 = api1.swarmEvent.waitFor(([, swarmEvent]) => !!swarmEvent.peerAvailable && peer2.equals(swarmEvent.peerAvailable.peer));
61
+ const promise2 = api2.swarmEvent.waitFor(([, swarmEvent]) => !!swarmEvent.peerAvailable && peer1.equals(swarmEvent.peerAvailable.peer));
74
62
  await api1.join(topic, peer1);
75
- const offer = {
76
- data: { offer: {} },
77
- id: peer2,
78
- remoteId: peer1,
79
- sessionId: protocols_1.PublicKey.random(),
80
- topic
81
- };
82
- const offerResult = await api1.offer(offer);
83
- (0, earljs_1.expect)(offerResult).toEqual({ accept: true });
84
- (0, earljs_1.expect)(offerMock).toHaveBeenCalledWith([offer]);
85
- }).timeout(5000);
86
- (0, mocha_1.it)('signal', async () => {
63
+ await api2.join(topic, peer2);
64
+ await promise1;
65
+ await promise2;
66
+ }).timeout(500);
67
+ (0, mocha_1.it)('signal to self', async () => {
68
+ const topic = protocols_1.PublicKey.random();
69
+ const peer1 = protocols_1.PublicKey.random();
70
+ const peer2 = protocols_1.PublicKey.random();
87
71
  const signalMock = (0, earljs_1.mockFn)()
88
72
  .resolvesTo();
89
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), signalMock);
73
+ const api1 = new signal_client_1.SignalClient(broker1.url(), signalMock);
74
+ (0, testutils_1.afterTest)(() => api1.close());
90
75
  await api1.join(topic, peer1);
91
76
  const msg = {
92
77
  id: peer2,
93
78
  remoteId: peer1,
94
79
  sessionId: protocols_1.PublicKey.random(),
95
80
  topic,
96
- data: { signal: { json: 'bar' } }
81
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
97
82
  };
98
83
  await api1.signal(msg);
99
84
  await (0, wait_for_expect_1.default)(() => {
100
85
  (0, earljs_1.expect)(signalMock).toHaveBeenCalledWith([msg]);
101
86
  }, 4000);
102
- }).timeout(5000);
87
+ }).timeout(500);
103
88
  mocha_1.it.skip('join across multiple signal servers', async () => {
89
+ const topic = protocols_1.PublicKey.random();
90
+ const peer1 = protocols_1.PublicKey.random();
91
+ const peer2 = protocols_1.PublicKey.random();
104
92
  // This feature is not implemented yet.
105
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), async () => { });
106
- api2 = new signal_client_1.SignalClient(signalApiUrl2, (async () => { }), async () => { });
93
+ const api1 = new signal_client_1.SignalClient(broker1.url(), async () => { });
94
+ (0, testutils_1.afterTest)(() => api1.close());
95
+ const api2 = new signal_client_1.SignalClient(broker2.url(), async () => { });
96
+ (0, testutils_1.afterTest)(() => api2.close());
107
97
  await api1.join(topic, peer1);
108
98
  await api2.join(topic, peer2);
109
- await (0, wait_for_expect_1.default)(async () => {
110
- const peers = await api2.lookup(topic);
111
- (0, earljs_1.expect)(peers.length).toEqual(2);
112
- }, 4000);
113
- await (0, wait_for_expect_1.default)(async () => {
114
- const peers = await api1.lookup(topic);
115
- (0, earljs_1.expect)(peers.length).toEqual(2);
116
- }, 4000);
99
+ // await waitForExpect(async () => {
100
+ // const peers = await api2.lookup(topic);
101
+ // expect(peers.length).toEqual(2);
102
+ // }, 4_000);
103
+ // await waitForExpect(async () => {
104
+ // const peers = await api1.lookup(topic);
105
+ // expect(peers.length).toEqual(2);
106
+ // }, 4_000);
117
107
  }).timeout(5000);
118
108
  // Skip because communication between signal servers is not yet implemented.
119
109
  mocha_1.it.skip('newly joined peer can receive signals from other signal servers', async () => {
120
- const offerMock = (0, earljs_1.mockFn)()
121
- .resolvesTo({ accept: true });
110
+ const topic = protocols_1.PublicKey.random();
111
+ const peer1 = protocols_1.PublicKey.random();
112
+ const peer2 = protocols_1.PublicKey.random();
122
113
  const signalMock = (0, earljs_1.mockFn)()
123
114
  .resolvesTo();
124
- api1 = new signal_client_1.SignalClient(signalApiUrl1, offerMock, async () => { });
125
- api2 = new signal_client_1.SignalClient(signalApiUrl2, (async () => { }), signalMock);
115
+ const api1 = new signal_client_1.SignalClient(broker1.url(), async () => { });
116
+ (0, testutils_1.afterTest)(() => api1.close());
117
+ const api2 = new signal_client_1.SignalClient(broker2.url(), signalMock);
118
+ (0, testutils_1.afterTest)(() => api2.close());
126
119
  await api1.join(topic, peer1);
127
120
  await (0, async_1.sleep)(3000);
128
121
  await api2.join(topic, peer2);
129
122
  const sessionId = protocols_1.PublicKey.random();
130
- const answer = await api2.offer({
131
- remoteId: peer1,
132
- id: peer2,
133
- topic,
134
- sessionId,
135
- data: { offer: {} }
136
- });
137
- (0, earljs_1.expect)(answer).toEqual({ accept: true });
138
123
  const msg = {
139
124
  id: peer2,
140
125
  remoteId: peer1,
@@ -147,5 +132,5 @@ const signal_client_1 = require("./signal-client");
147
132
  (0, earljs_1.expect)(signalMock).toHaveBeenCalledWith([msg]);
148
133
  }, 4000);
149
134
  }).timeout(5000);
150
- }).timeout(10000);
135
+ });
151
136
  //# sourceMappingURL=signal-client.test.js.map