@dxos/network-manager 2.33.9-dev.d0ae5f95 → 2.33.9-dev.d0dce35f

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 (151) 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 +50 -21
  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 +6 -6
  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 -37
  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 -5
  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/signal/in-memory-signal-manager.d.ts +7 -7
  35. package/dist/src/signal/in-memory-signal-manager.d.ts.map +1 -1
  36. package/dist/src/signal/in-memory-signal-manager.js +29 -8
  37. package/dist/src/signal/in-memory-signal-manager.js.map +1 -1
  38. package/dist/src/signal/index.d.ts +1 -2
  39. package/dist/src/signal/index.d.ts.map +1 -1
  40. package/dist/src/signal/index.js +1 -2
  41. package/dist/src/signal/index.js.map +1 -1
  42. package/dist/src/signal/integration.test.d.ts +2 -0
  43. package/dist/src/signal/integration.test.d.ts.map +1 -0
  44. package/dist/src/signal/integration.test.js +102 -0
  45. package/dist/src/signal/integration.test.js.map +1 -0
  46. package/dist/src/signal/message-router.d.ts +7 -7
  47. package/dist/src/signal/message-router.d.ts.map +1 -1
  48. package/dist/src/signal/message-router.js +6 -1
  49. package/dist/src/signal/message-router.js.map +1 -1
  50. package/dist/src/signal/message-router.test.js +15 -19
  51. package/dist/src/signal/message-router.test.js.map +1 -1
  52. package/dist/src/signal/signal-client.d.ts +33 -18
  53. package/dist/src/signal/signal-client.d.ts.map +1 -1
  54. package/dist/src/signal/signal-client.js +102 -92
  55. package/dist/src/signal/signal-client.js.map +1 -1
  56. package/dist/src/signal/signal-client.test.js +60 -77
  57. package/dist/src/signal/signal-client.test.js.map +1 -1
  58. package/dist/src/signal/{websocket-signal-manager.d.ts → signal-manager-impl.d.ts} +13 -11
  59. package/dist/src/signal/signal-manager-impl.d.ts.map +1 -0
  60. package/dist/src/signal/signal-manager-impl.js +151 -0
  61. package/dist/src/signal/signal-manager-impl.js.map +1 -0
  62. package/dist/src/signal/signal-manager.d.ts +12 -11
  63. package/dist/src/signal/signal-manager.d.ts.map +1 -1
  64. package/dist/src/signal/signal-rpc-client.d.ts +19 -0
  65. package/dist/src/signal/signal-rpc-client.d.ts.map +1 -0
  66. package/dist/src/signal/signal-rpc-client.js +108 -0
  67. package/dist/src/signal/signal-rpc-client.js.map +1 -0
  68. package/dist/src/signal/signal-rpc-client.test.d.ts +2 -0
  69. package/dist/src/signal/signal-rpc-client.test.d.ts.map +1 -0
  70. package/dist/src/signal/signal-rpc-client.test.js +74 -0
  71. package/dist/src/signal/signal-rpc-client.test.js.map +1 -0
  72. package/dist/src/swarm/connection.d.ts +3 -3
  73. package/dist/src/swarm/connection.d.ts.map +1 -1
  74. package/dist/src/swarm/connection.js +1 -4
  75. package/dist/src/swarm/connection.js.map +1 -1
  76. package/dist/src/swarm/swarm.d.ts +6 -7
  77. package/dist/src/swarm/swarm.d.ts.map +1 -1
  78. package/dist/src/swarm/swarm.js +21 -17
  79. package/dist/src/swarm/swarm.js.map +1 -1
  80. package/dist/src/swarm/swarm.test.js +156 -117
  81. package/dist/src/swarm/swarm.test.js.map +1 -1
  82. package/dist/src/topology/fully-connected-topology.d.ts +0 -1
  83. package/dist/src/topology/fully-connected-topology.d.ts.map +1 -1
  84. package/dist/src/topology/fully-connected-topology.js +1 -6
  85. package/dist/src/topology/fully-connected-topology.js.map +1 -1
  86. package/dist/src/topology/mmst-topology.d.ts +0 -1
  87. package/dist/src/topology/mmst-topology.d.ts.map +1 -1
  88. package/dist/src/topology/mmst-topology.js +1 -6
  89. package/dist/src/topology/mmst-topology.js.map +1 -1
  90. package/dist/src/topology/star-topology.d.ts +0 -1
  91. package/dist/src/topology/star-topology.d.ts.map +1 -1
  92. package/dist/src/topology/star-topology.js +1 -6
  93. package/dist/src/topology/star-topology.js.map +1 -1
  94. package/dist/src/topology/topology.d.ts +0 -6
  95. package/dist/src/topology/topology.d.ts.map +1 -1
  96. package/dist/src/transport/in-memory-transport.d.ts +2 -2
  97. package/dist/src/transport/in-memory-transport.d.ts.map +1 -1
  98. package/dist/src/transport/in-memory-transport.js.map +1 -1
  99. package/dist/src/transport/transport.d.ts +3 -3
  100. package/dist/src/transport/transport.d.ts.map +1 -1
  101. package/dist/src/transport/webrtc-transport.d.ts +3 -3
  102. package/dist/src/transport/webrtc-transport.d.ts.map +1 -1
  103. package/dist/src/transport/webrtc-transport.js.map +1 -1
  104. package/dist/tests-setup.js +1 -1
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +16 -14
  107. package/src/network-manager.blueprint-test.ts +61 -26
  108. package/src/network-manager.browser-test.ts +1 -1
  109. package/src/network-manager.test.ts +8 -7
  110. package/src/network-manager.ts +8 -9
  111. package/src/proto/defs/dxos/mesh/signal.proto +53 -35
  112. package/src/proto/defs/dxos/mesh/signalMessage.proto +51 -0
  113. package/src/proto/gen/dxos/credentials.ts +40 -0
  114. package/src/proto/gen/dxos/halo/keys.ts +45 -2
  115. package/src/proto/gen/dxos/mesh/signal.ts +73 -37
  116. package/src/proto/gen/dxos/mesh/signalMessage.ts +83 -0
  117. package/src/proto/gen/google/protobuf.ts +9 -2
  118. package/src/proto/gen/index.ts +18 -6
  119. package/src/proto/substitutions.ts +3 -1
  120. package/src/signal/in-memory-signal-manager.ts +37 -12
  121. package/src/signal/index.ts +1 -2
  122. package/src/signal/integration.test.ts +117 -0
  123. package/src/signal/message-router.test.ts +36 -41
  124. package/src/signal/message-router.ts +22 -18
  125. package/src/signal/signal-client.test.ts +70 -92
  126. package/src/signal/signal-client.ts +119 -113
  127. package/src/signal/signal-manager-impl.ts +166 -0
  128. package/src/signal/signal-manager.ts +12 -12
  129. package/src/signal/signal-rpc-client.test.ts +86 -0
  130. package/src/signal/signal-rpc-client.ts +121 -0
  131. package/src/swarm/connection.ts +5 -8
  132. package/src/swarm/swarm.test.ts +208 -169
  133. package/src/swarm/swarm.ts +24 -20
  134. package/src/topology/fully-connected-topology.ts +1 -9
  135. package/src/topology/mmst-topology.ts +1 -9
  136. package/src/topology/star-topology.ts +1 -7
  137. package/src/topology/topology.ts +0 -7
  138. package/src/transport/in-memory-transport.ts +2 -2
  139. package/src/transport/transport.ts +3 -3
  140. package/src/transport/webrtc-transport.ts +3 -3
  141. package/dist/browser-mocha/bundle.js +0 -119276
  142. package/dist/browser-mocha/main.js +0 -27
  143. package/dist/src/signal/websocket-rpc.d.ts +0 -30
  144. package/dist/src/signal/websocket-rpc.d.ts.map +0 -1
  145. package/dist/src/signal/websocket-rpc.js +0 -203
  146. package/dist/src/signal/websocket-rpc.js.map +0 -1
  147. package/dist/src/signal/websocket-signal-manager.d.ts.map +0 -1
  148. package/dist/src/signal/websocket-signal-manager.js +0 -134
  149. package/dist/src/signal/websocket-signal-manager.js.map +0 -1
  150. package/src/signal/websocket-rpc.ts +0 -208
  151. package/src/signal/websocket-signal-manager.ts +0 -158
@@ -2,34 +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 debug_2 = require("@dxos/debug");
13
- const protocols_1 = require("@dxos/protocols");
19
+ const util_1 = require("@dxos/util");
14
20
  const gen_1 = require("../proto/gen");
15
- const signal_api_1 = require("./signal-api");
16
- const websocket_rpc_1 = require("./websocket-rpc");
21
+ const signal_rpc_client_1 = require("./signal-rpc-client");
17
22
  const log = (0, debug_1.default)('dxos:network-manager:signal-client');
18
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 = {}));
19
37
  /**
20
38
  * Establishes a websocket connection to signal server and provides RPC methods.
21
39
  */
22
40
  class SignalClient {
23
41
  /**
24
42
  * @param _host Signal server websocket URL.
25
- * @param _onOffer See `SignalApi.offer`.
26
43
  * @param _onSignal See `SignalApi.signal`.
27
44
  */
28
- constructor(_host, _onOffer, _onSignal) {
45
+ constructor(_host, _onSignal) {
29
46
  this._host = _host;
30
- this._onOffer = _onOffer;
31
47
  this._onSignal = _onSignal;
32
- this._state = signal_api_1.SignalApi.State.CONNECTING;
48
+ this._state = State.CONNECTING;
33
49
  /**
34
50
  * Number of milliseconds after which the connection will be attempted again in case of error.
35
51
  */
@@ -42,10 +58,13 @@ class SignalClient {
42
58
  * Timestamp of last state change.
43
59
  */
44
60
  this._lastStateChange = Date.now();
45
- this._clientCleanup = [];
61
+ this._cleanupSubscriptions = new util_1.SubscriptionGroup();
46
62
  this.statusChanged = new async_1.Event();
47
63
  this.commandTrace = new async_1.Event();
48
- 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);
49
68
  this._createClient();
50
69
  }
51
70
  _setState(newState) {
@@ -57,93 +76,72 @@ class SignalClient {
57
76
  _createClient() {
58
77
  this._connectionStarted = Date.now();
59
78
  try {
60
- this._client = new websocket_rpc_1.WebsocketRpc(this._host);
79
+ this._client = new signal_rpc_client_1.SignalRPCClient(this._host);
61
80
  }
62
81
  catch (error) {
63
- if (this._state === signal_api_1.SignalApi.State.RE_CONNECTING) {
82
+ if (this._state === State.RE_CONNECTING) {
64
83
  this._reconnectAfter *= 2;
65
84
  }
66
85
  this._lastError = error;
67
- this._setState(signal_api_1.SignalApi.State.DISCONNECTED);
86
+ this._setState(State.DISCONNECTED);
68
87
  this._reconnect();
69
88
  }
70
- this._client.addHandler('offer', (message) => this._onOffer({
71
- id: protocols_1.PublicKey.from(message.id),
72
- remoteId: protocols_1.PublicKey.from(message.remoteId),
73
- topic: protocols_1.PublicKey.from(message.topic),
74
- sessionId: protocols_1.PublicKey.from(message.sessionId),
75
- data: message.data
76
- }));
77
- this._client.subscribe('signal', (msg) => {
78
- var _a;
79
- return this._onSignal({
80
- id: protocols_1.PublicKey.from(msg.id),
81
- remoteId: protocols_1.PublicKey.from(msg.remoteId),
82
- topic: protocols_1.PublicKey.from(msg.topic),
83
- sessionId: protocols_1.PublicKey.from(msg.sessionId),
84
- data: gen_1.schema.getCodecForType('dxos.mesh.signal.MessageData').decode((_a = msg.data) !== null && _a !== void 0 ? _a : (0, debug_2.failUndefined)()),
85
- // Field that MessageRouter adds, so on lower level it not always defined.
86
- messageId: msg.messageId ? protocols_1.PublicKey.from(msg.messageId) : undefined
87
- });
88
- });
89
- this._clientCleanup.push(this._client.connected.on(() => {
90
- log('Socket connected');
89
+ this._cleanupSubscriptions.push(this._client.connected.on(() => {
91
90
  this._lastError = undefined;
92
91
  this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;
93
- this._setState(signal_api_1.SignalApi.State.CONNECTED);
92
+ this._setState(State.CONNECTED);
94
93
  }));
95
- this._clientCleanup.push(this._client.error.on(error => {
94
+ this._cleanupSubscriptions.push(this._client.error.on(error => {
96
95
  log(`Socket error: ${error.message}`);
97
- if (this._state === signal_api_1.SignalApi.State.CLOSED) {
96
+ if (this._state === State.CLOSED) {
98
97
  return;
99
98
  }
100
- if (this._state === signal_api_1.SignalApi.State.RE_CONNECTING) {
99
+ if (this._state === State.RE_CONNECTING) {
101
100
  this._reconnectAfter *= 2;
102
101
  }
103
102
  this._lastError = error;
104
- this._setState(signal_api_1.SignalApi.State.DISCONNECTED);
103
+ this._setState(State.DISCONNECTED);
105
104
  this._reconnect();
106
105
  }));
107
- this._clientCleanup.push(this._client.disconnected.on(() => {
106
+ this._cleanupSubscriptions.push(this._client.disconnected.on(() => {
108
107
  log('Socket disconnected');
109
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.
110
- 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) {
111
110
  return;
112
111
  }
113
- if (this._state === signal_api_1.SignalApi.State.RE_CONNECTING) {
112
+ if (this._state === State.RE_CONNECTING) {
114
113
  this._reconnectAfter *= 2;
115
114
  }
116
- this._setState(signal_api_1.SignalApi.State.DISCONNECTED);
115
+ this._setState(State.DISCONNECTED);
117
116
  this._reconnect();
118
117
  }));
119
- this._clientCleanup.push(this._client.commandTrace.on(trace => this.commandTrace.emit(trace)));
120
118
  }
121
119
  _reconnect() {
120
+ log(`Reconnecting in ${this._reconnectAfter}ms`);
122
121
  if (this._reconnectIntervalId !== undefined) {
123
122
  console.error('Signal api already reconnecting.');
124
123
  return;
125
124
  }
126
- if (this._state === signal_api_1.SignalApi.State.CLOSED) {
125
+ if (this._state === State.CLOSED) {
127
126
  return;
128
127
  }
129
128
  this._reconnectIntervalId = setTimeout(() => {
130
129
  this._reconnectIntervalId = undefined;
131
- this._clientCleanup.forEach(cb => cb());
132
- this._clientCleanup = [];
130
+ this._cleanupSubscriptions.unsubscribe();
133
131
  // Close client if it wasn't already closed.
134
132
  this._client.close().catch(() => { });
135
- this._setState(signal_api_1.SignalApi.State.RE_CONNECTING);
133
+ this._setState(State.RE_CONNECTING);
136
134
  this._createClient();
137
135
  }, this._reconnectAfter);
138
136
  }
139
137
  async close() {
140
- this._clientCleanup.forEach(cb => cb());
141
- this._clientCleanup = [];
138
+ this._cleanupSubscriptions.unsubscribe();
142
139
  if (this._reconnectIntervalId !== undefined) {
143
140
  clearTimeout(this._reconnectIntervalId);
144
141
  }
145
142
  await this._client.close();
146
- this._setState(signal_api_1.SignalApi.State.CLOSED);
143
+ this._setState(State.CLOSED);
144
+ log('Closed.');
147
145
  }
148
146
  getStatus() {
149
147
  var _a;
@@ -157,54 +155,66 @@ class SignalClient {
157
155
  };
158
156
  }
159
157
  async join(topic, peerId) {
160
- const peers = await this._client.call('join', {
161
- id: peerId.asBuffer(),
162
- topic: topic.asBuffer()
163
- });
164
- 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);
165
161
  }
166
162
  async leave(topic, peerId) {
167
- await this._client.call('leave', {
168
- id: peerId.asBuffer(),
169
- topic: topic.asBuffer()
170
- });
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);
171
169
  }
172
- async lookup(topic) {
173
- const peers = await this._client.call('lookup', {
174
- topic: topic.asBuffer()
175
- });
176
- 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);
177
176
  }
178
- /**
179
- * Routes an offer to the other peer's _onOffer callback.
180
- * @returns Other peer's _onOffer callback return value.
181
- * @deprecated
182
- */
183
- async offer(msg) {
184
- var _a, _b, _c, _d;
185
- return this._client.call('offer', {
186
- id: (_a = msg.id) === null || _a === void 0 ? void 0 : _a.asBuffer(),
187
- remoteId: (_b = msg.remoteId) === null || _b === void 0 ? void 0 : _b.asBuffer(),
188
- topic: (_c = msg.topic) === null || _c === void 0 ? void 0 : _c.asBuffer(),
189
- sessionId: (_d = msg.sessionId) === null || _d === void 0 ? void 0 : _d.asBuffer(),
190
- 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);
191
190
  });
192
191
  }
193
- /**
194
- * Routes an offer to the other peer's _onSignal callback.
195
- */
196
- async signal(message) {
197
- var _a, _b, _c, _d, _e, _f;
198
- const signalMessage = {
199
- messageId: (_a = message.messageId) === null || _a === void 0 ? void 0 : _a.asBuffer(),
200
- id: (_b = message.id) === null || _b === void 0 ? void 0 : _b.asBuffer(),
201
- remoteId: (_c = message.remoteId) === null || _c === void 0 ? void 0 : _c.asBuffer(),
202
- topic: (_d = message.topic) === null || _d === void 0 ? void 0 : _d.asBuffer(),
203
- sessionId: (_e = message.sessionId) === null || _e === void 0 ? void 0 : _e.asBuffer(),
204
- data: Buffer.from(gen_1.schema.getCodecForType('dxos.mesh.signal.MessageData').encode((_f = message.data) !== null && _f !== void 0 ? _f : (0, debug_2.failUndefined)()))
205
- };
206
- return this._client.emit('signal', signalMessage);
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);
213
+ });
207
214
  }
208
215
  }
216
+ __decorate([
217
+ async_1.synchronized
218
+ ], SignalClient.prototype, "_subscribeSwarmEvents", null);
209
219
  exports.SignalClient = SignalClient;
210
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,90 +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'" } },
57
- messageId: undefined
45
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
58
46
  };
59
47
  await api2.signal(msg);
60
48
  await (0, wait_for_expect_1.default)(() => {
61
49
  (0, earljs_1.expect)(signalMock1).toHaveBeenCalledWith([msg]);
62
50
  }, 4000);
63
- }).timeout(5000);
51
+ }).timeout(500);
64
52
  (0, mocha_1.it)('join', async () => {
65
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), async () => { });
66
- const join = await api1.join(topic, peer1);
67
- (0, earljs_1.expect)(join).toEqual([peer1]);
68
- const join2 = await api1.join(topic, peer2);
69
- (0, earljs_1.expect)(join2).toEqual([peer1, peer2]);
70
- }).timeout(1000);
71
- (0, mocha_1.it)('offer', async () => {
72
- const offerMock = (0, earljs_1.mockFn)()
73
- .resolvesTo({ accept: true });
74
- 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));
75
62
  await api1.join(topic, peer1);
76
- const offer = {
77
- data: { offer: {} },
78
- id: peer2,
79
- remoteId: peer1,
80
- sessionId: protocols_1.PublicKey.random(),
81
- topic
82
- };
83
- const offerResult = await api1.offer(offer);
84
- (0, earljs_1.expect)(offerResult).toEqual({ accept: true });
85
- (0, earljs_1.expect)(offerMock).toHaveBeenCalledWith([offer]);
86
- }).timeout(5000);
87
- (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();
88
71
  const signalMock = (0, earljs_1.mockFn)()
89
72
  .resolvesTo();
90
- 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());
91
75
  await api1.join(topic, peer1);
92
76
  const msg = {
93
77
  id: peer2,
94
78
  remoteId: peer1,
95
79
  sessionId: protocols_1.PublicKey.random(),
96
80
  topic,
97
- data: { signal: { json: 'bar' } },
98
- messageId: undefined
81
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
99
82
  };
100
83
  await api1.signal(msg);
101
84
  await (0, wait_for_expect_1.default)(() => {
102
85
  (0, earljs_1.expect)(signalMock).toHaveBeenCalledWith([msg]);
103
86
  }, 4000);
104
- }).timeout(5000);
87
+ }).timeout(500);
105
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();
106
92
  // This feature is not implemented yet.
107
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), async () => { });
108
- 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());
109
97
  await api1.join(topic, peer1);
110
98
  await api2.join(topic, peer2);
111
- await (0, wait_for_expect_1.default)(async () => {
112
- const peers = await api2.lookup(topic);
113
- (0, earljs_1.expect)(peers.length).toEqual(2);
114
- }, 4000);
115
- await (0, wait_for_expect_1.default)(async () => {
116
- const peers = await api1.lookup(topic);
117
- (0, earljs_1.expect)(peers.length).toEqual(2);
118
- }, 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);
119
107
  }).timeout(5000);
120
108
  // Skip because communication between signal servers is not yet implemented.
121
109
  mocha_1.it.skip('newly joined peer can receive signals from other signal servers', async () => {
122
- const offerMock = (0, earljs_1.mockFn)()
123
- .resolvesTo({ accept: true });
110
+ const topic = protocols_1.PublicKey.random();
111
+ const peer1 = protocols_1.PublicKey.random();
112
+ const peer2 = protocols_1.PublicKey.random();
124
113
  const signalMock = (0, earljs_1.mockFn)()
125
114
  .resolvesTo();
126
- api1 = new signal_client_1.SignalClient(signalApiUrl1, offerMock, async () => { });
127
- 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());
128
119
  await api1.join(topic, peer1);
129
120
  await (0, async_1.sleep)(3000);
130
121
  await api2.join(topic, peer2);
131
122
  const sessionId = protocols_1.PublicKey.random();
132
- const answer = await api2.offer({
133
- remoteId: peer1,
134
- id: peer2,
135
- topic,
136
- sessionId,
137
- data: { offer: {} }
138
- });
139
- (0, earljs_1.expect)(answer).toEqual({ accept: true });
140
123
  const msg = {
141
124
  id: peer2,
142
125
  remoteId: peer1,
@@ -149,5 +132,5 @@ const signal_client_1 = require("./signal-client");
149
132
  (0, earljs_1.expect)(signalMock).toHaveBeenCalledWith([msg]);
150
133
  }, 4000);
151
134
  }).timeout(5000);
152
- }).timeout(10000);
135
+ });
153
136
  //# sourceMappingURL=signal-client.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-client.test.js","sourceRoot":"","sources":["../../../src/signal/signal-client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal-client.test.js","sourceRoot":"","sources":["../../../src/signal/signal-client.test.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,31 @@
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';
5
6
  import { SignalManager } from './signal-manager';
6
- export declare class WebsocketSignalManager implements SignalManager {
7
+ export declare class SignalManagerImpl implements SignalManager {
7
8
  private readonly _hosts;
8
- private readonly _onOffer;
9
9
  private readonly _servers;
10
10
  /** Topics joined: topic => peerId */
11
11
  private readonly _topicsJoined;
12
+ /** host => topic => peerId */
12
13
  private readonly _topicsJoinedPerSignal;
14
+ private _reconciling?;
13
15
  private _reconcileTimeoutId?;
16
+ private _destroyed;
14
17
  readonly statusChanged: Event<SignalApi.Status[]>;
15
18
  readonly commandTrace: Event<SignalApi.CommandTrace>;
16
- readonly peerCandidatesChanged: Event<[topic: PublicKey, candidates: PublicKey[]]>;
17
- readonly onSignal: Event<Message>;
18
- constructor(_hosts: string[], _onOffer: (message: Message) => Promise<Answer>);
19
+ readonly swarmEvent: Event<[topic: PublicKey, swarmEvent: SwarmEvent]>;
20
+ readonly onMessage: Event<SignalMessage>;
21
+ constructor(_hosts: string[]);
19
22
  getStatus(): SignalApi.Status[];
20
23
  join(topic: PublicKey, peerId: PublicKey): void;
21
24
  leave(topic: PublicKey, peerId: PublicKey): void;
25
+ private _scheduleReconcile;
26
+ private _reconcileLater;
22
27
  private _reconcileJoinedTopics;
23
- private _reconcile;
24
- lookup(topic: PublicKey): void;
25
- offer(msg: Message): Promise<Answer>;
26
- signal(msg: Message): Promise<void>;
28
+ message(msg: SignalMessage): Promise<void>;
27
29
  destroy(): Promise<void>;
28
30
  }
29
- //# sourceMappingURL=websocket-signal-manager.d.ts.map
31
+ //# sourceMappingURL=signal-manager-impl.d.ts.map