@dxos/network-manager 2.33.9-dev.9246a07b → 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 (148) 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 +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.map +1 -1
  13. package/dist/src/proto/gen/dxos/halo/keys.d.ts.map +1 -1
  14. package/dist/src/proto/gen/dxos/halo/keys.js.map +1 -1
  15. package/dist/src/proto/gen/dxos/mesh/signal.d.ts +52 -45
  16. package/dist/src/proto/gen/dxos/mesh/signal.d.ts.map +1 -1
  17. package/dist/src/proto/gen/dxos/mesh/signalMessage.d.ts +79 -0
  18. package/dist/src/proto/gen/dxos/mesh/signalMessage.d.ts.map +1 -0
  19. package/dist/src/proto/gen/dxos/mesh/signalMessage.js +3 -0
  20. package/dist/src/proto/gen/dxos/mesh/signalMessage.js.map +1 -0
  21. package/dist/src/proto/gen/google/protobuf.d.ts +6 -0
  22. package/dist/src/proto/gen/google/protobuf.d.ts.map +1 -1
  23. package/dist/src/proto/gen/index.d.ts +17 -5
  24. package/dist/src/proto/gen/index.d.ts.map +1 -1
  25. package/dist/src/proto/gen/index.js +1 -1
  26. package/dist/src/proto/gen/index.js.map +1 -1
  27. package/dist/src/proto/substitutions.d.ts +4 -0
  28. package/dist/src/proto/substitutions.d.ts.map +1 -1
  29. package/dist/src/proto/substitutions.js +3 -1
  30. package/dist/src/proto/substitutions.js.map +1 -1
  31. package/dist/src/signal/in-memory-signal-manager.d.ts +7 -7
  32. package/dist/src/signal/in-memory-signal-manager.d.ts.map +1 -1
  33. package/dist/src/signal/in-memory-signal-manager.js +29 -8
  34. package/dist/src/signal/in-memory-signal-manager.js.map +1 -1
  35. package/dist/src/signal/index.d.ts +1 -2
  36. package/dist/src/signal/index.d.ts.map +1 -1
  37. package/dist/src/signal/index.js +1 -2
  38. package/dist/src/signal/index.js.map +1 -1
  39. package/dist/src/signal/integration.test.d.ts +2 -0
  40. package/dist/src/signal/integration.test.d.ts.map +1 -0
  41. package/dist/src/signal/integration.test.js +102 -0
  42. package/dist/src/signal/integration.test.js.map +1 -0
  43. package/dist/src/signal/message-router.d.ts +7 -7
  44. package/dist/src/signal/message-router.d.ts.map +1 -1
  45. package/dist/src/signal/message-router.js +6 -1
  46. package/dist/src/signal/message-router.js.map +1 -1
  47. package/dist/src/signal/message-router.test.js +15 -19
  48. package/dist/src/signal/message-router.test.js.map +1 -1
  49. package/dist/src/signal/signal-client.d.ts +33 -18
  50. package/dist/src/signal/signal-client.d.ts.map +1 -1
  51. package/dist/src/signal/signal-client.js +102 -92
  52. package/dist/src/signal/signal-client.js.map +1 -1
  53. package/dist/src/signal/signal-client.test.js +60 -77
  54. package/dist/src/signal/signal-client.test.js.map +1 -1
  55. package/dist/src/signal/{websocket-signal-manager.d.ts → signal-manager-impl.d.ts} +13 -11
  56. package/dist/src/signal/signal-manager-impl.d.ts.map +1 -0
  57. package/dist/src/signal/signal-manager-impl.js +151 -0
  58. package/dist/src/signal/signal-manager-impl.js.map +1 -0
  59. package/dist/src/signal/signal-manager.d.ts +12 -11
  60. package/dist/src/signal/signal-manager.d.ts.map +1 -1
  61. package/dist/src/signal/signal-rpc-client.d.ts +19 -0
  62. package/dist/src/signal/signal-rpc-client.d.ts.map +1 -0
  63. package/dist/src/signal/signal-rpc-client.js +108 -0
  64. package/dist/src/signal/signal-rpc-client.js.map +1 -0
  65. package/dist/src/signal/signal-rpc-client.test.d.ts +2 -0
  66. package/dist/src/signal/signal-rpc-client.test.d.ts.map +1 -0
  67. package/dist/src/signal/signal-rpc-client.test.js +74 -0
  68. package/dist/src/signal/signal-rpc-client.test.js.map +1 -0
  69. package/dist/src/swarm/connection.d.ts +3 -3
  70. package/dist/src/swarm/connection.d.ts.map +1 -1
  71. package/dist/src/swarm/connection.js +1 -4
  72. package/dist/src/swarm/connection.js.map +1 -1
  73. package/dist/src/swarm/swarm.d.ts +6 -7
  74. package/dist/src/swarm/swarm.d.ts.map +1 -1
  75. package/dist/src/swarm/swarm.js +21 -17
  76. package/dist/src/swarm/swarm.js.map +1 -1
  77. package/dist/src/swarm/swarm.test.js +156 -117
  78. package/dist/src/swarm/swarm.test.js.map +1 -1
  79. package/dist/src/topology/fully-connected-topology.d.ts +0 -1
  80. package/dist/src/topology/fully-connected-topology.d.ts.map +1 -1
  81. package/dist/src/topology/fully-connected-topology.js +1 -6
  82. package/dist/src/topology/fully-connected-topology.js.map +1 -1
  83. package/dist/src/topology/mmst-topology.d.ts +0 -1
  84. package/dist/src/topology/mmst-topology.d.ts.map +1 -1
  85. package/dist/src/topology/mmst-topology.js +1 -6
  86. package/dist/src/topology/mmst-topology.js.map +1 -1
  87. package/dist/src/topology/star-topology.d.ts +0 -1
  88. package/dist/src/topology/star-topology.d.ts.map +1 -1
  89. package/dist/src/topology/star-topology.js +1 -6
  90. package/dist/src/topology/star-topology.js.map +1 -1
  91. package/dist/src/topology/topology.d.ts +0 -6
  92. package/dist/src/topology/topology.d.ts.map +1 -1
  93. package/dist/src/transport/in-memory-transport.d.ts +2 -2
  94. package/dist/src/transport/in-memory-transport.d.ts.map +1 -1
  95. package/dist/src/transport/in-memory-transport.js.map +1 -1
  96. package/dist/src/transport/transport.d.ts +3 -3
  97. package/dist/src/transport/transport.d.ts.map +1 -1
  98. package/dist/src/transport/webrtc-transport.d.ts +3 -3
  99. package/dist/src/transport/webrtc-transport.d.ts.map +1 -1
  100. package/dist/src/transport/webrtc-transport.js.map +1 -1
  101. package/dist/tests-setup.js +1 -1
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +14 -12
  104. package/src/network-manager.blueprint-test.ts +57 -22
  105. package/src/network-manager.browser-test.ts +1 -1
  106. package/src/network-manager.test.ts +8 -7
  107. package/src/network-manager.ts +8 -9
  108. package/src/proto/defs/dxos/mesh/signal.proto +53 -35
  109. package/src/proto/defs/dxos/mesh/signalMessage.proto +51 -0
  110. package/src/proto/gen/dxos/credentials.ts +1 -0
  111. package/src/proto/gen/dxos/halo/keys.ts +1 -0
  112. package/src/proto/gen/dxos/mesh/signal.ts +51 -45
  113. package/src/proto/gen/dxos/mesh/signalMessage.ts +83 -0
  114. package/src/proto/gen/google/protobuf.ts +7 -0
  115. package/src/proto/gen/index.ts +18 -6
  116. package/src/proto/substitutions.ts +3 -1
  117. package/src/signal/in-memory-signal-manager.ts +37 -12
  118. package/src/signal/index.ts +1 -2
  119. package/src/signal/integration.test.ts +117 -0
  120. package/src/signal/message-router.test.ts +36 -41
  121. package/src/signal/message-router.ts +22 -18
  122. package/src/signal/signal-client.test.ts +70 -92
  123. package/src/signal/signal-client.ts +119 -113
  124. package/src/signal/signal-manager-impl.ts +166 -0
  125. package/src/signal/signal-manager.ts +12 -12
  126. package/src/signal/signal-rpc-client.test.ts +86 -0
  127. package/src/signal/signal-rpc-client.ts +121 -0
  128. package/src/swarm/connection.ts +5 -8
  129. package/src/swarm/swarm.test.ts +208 -169
  130. package/src/swarm/swarm.ts +24 -20
  131. package/src/topology/fully-connected-topology.ts +1 -9
  132. package/src/topology/mmst-topology.ts +1 -9
  133. package/src/topology/star-topology.ts +1 -7
  134. package/src/topology/topology.ts +0 -7
  135. package/src/transport/in-memory-transport.ts +2 -2
  136. package/src/transport/transport.ts +3 -3
  137. package/src/transport/webrtc-transport.ts +3 -3
  138. package/dist/browser-mocha/bundle.js +0 -119346
  139. package/dist/browser-mocha/main.js +0 -27
  140. package/dist/src/signal/websocket-rpc.d.ts +0 -30
  141. package/dist/src/signal/websocket-rpc.d.ts.map +0 -1
  142. package/dist/src/signal/websocket-rpc.js +0 -203
  143. package/dist/src/signal/websocket-rpc.js.map +0 -1
  144. package/dist/src/signal/websocket-signal-manager.d.ts.map +0 -1
  145. package/dist/src/signal/websocket-signal-manager.js +0 -134
  146. package/dist/src/signal/websocket-signal-manager.js.map +0 -1
  147. package/src/signal/websocket-rpc.ts +0 -208
  148. package/src/signal/websocket-signal-manager.ts +0 -158
@@ -8,7 +8,7 @@ import debug from 'debug';
8
8
  import { PublicKey } from '@dxos/protocols';
9
9
  import { ComplexMap, ComplexSet, exponentialBackoffInterval, SubscriptionGroup } from '@dxos/util';
10
10
 
11
- import { Answer, Message } from '../proto/gen/dxos/mesh/signal';
11
+ import { Answer, SignalMessage } from '../proto/gen/dxos/mesh/signalMessage';
12
12
  import { SignalMessaging } from './signal-manager';
13
13
 
14
14
  interface OfferRecord {
@@ -17,9 +17,9 @@ interface OfferRecord {
17
17
  }
18
18
 
19
19
  interface MessageRouterOptions {
20
- onSignal?: (message: Message) => Promise<void>;
21
- sendMessage?: (message: Message) => Promise<void>;
22
- onOffer?: (message: Message) => Promise<Answer>;
20
+ sendMessage?: (message: SignalMessage) => Promise<void>;
21
+ onOffer?: (message: SignalMessage) => Promise<Answer>;
22
+ onSignal?: (message: SignalMessage) => Promise<void>;
23
23
  retryDelay?: number;
24
24
  timeout?: number;
25
25
  }
@@ -31,9 +31,9 @@ const log = debug('dxos:network-manager:message-router');
31
31
  // TODO(mykola): https://github.com/dxos/protocols/issues/1316
32
32
  export class MessageRouter implements SignalMessaging {
33
33
  private readonly _offerRecords: ComplexMap<PublicKey, OfferRecord> = new ComplexMap(key => key.toHex());
34
- private readonly _onSignal: (message: Message) => Promise<void>;
35
- private readonly _sendMessage: (message: Message) => Promise<void>;
36
- private readonly _onOffer: (message: Message) => Promise<Answer>;
34
+ private readonly _onSignal: (message: SignalMessage) => Promise<void>;
35
+ private readonly _sendMessage: (message: SignalMessage) => Promise<void>;
36
+ private readonly _onOffer: (message: SignalMessage) => Promise<Answer>;
37
37
 
38
38
  private readonly _onAckCallbacks = new ComplexMap<PublicKey, () => void>(key => key.toHex());
39
39
  private readonly _receivedMessages = new ComplexSet<PublicKey>(key => key.toHex());
@@ -59,7 +59,7 @@ export class MessageRouter implements SignalMessaging {
59
59
  this._timeout = timeout;
60
60
  }
61
61
 
62
- async receiveMessage (message: Message): Promise<void> {
62
+ async receiveMessage (message: SignalMessage): Promise<void> {
63
63
  log(`receive message: ${JSON.stringify(message)}`);
64
64
  if (!message.data?.ack) {
65
65
  if (this._receivedMessages.has(message.messageId!)) {
@@ -81,12 +81,12 @@ export class MessageRouter implements SignalMessaging {
81
81
  }
82
82
  }
83
83
 
84
- async signal (message: Message): Promise<void> {
84
+ async signal (message: SignalMessage): Promise<void> {
85
85
  assert(message.data?.signal);
86
86
  await this._sendReliableMessage(message);
87
87
  }
88
88
 
89
- async offer (message: Message): Promise<Answer> {
89
+ async offer (message: SignalMessage): Promise<Answer> {
90
90
  message.messageId = PublicKey.random();
91
91
  const promise = new Promise<Answer>((resolve, reject) => {
92
92
  this._offerRecords.set(message.messageId!, { resolve, reject });
@@ -95,7 +95,7 @@ export class MessageRouter implements SignalMessaging {
95
95
  return promise;
96
96
  }
97
97
 
98
- private async _sendReliableMessage (message: Message): Promise<PublicKey> {
98
+ private async _sendReliableMessage (message: SignalMessage): Promise<PublicKey> {
99
99
  // Setting unique messageId if it not specified yet.
100
100
  message.messageId = message.messageId ?? PublicKey.random();
101
101
  log(`sent message: ${JSON.stringify(message)}`);
@@ -103,7 +103,11 @@ export class MessageRouter implements SignalMessaging {
103
103
  // Setting retry interval if signal was not acknowledged.
104
104
  const cancelRetry = exponentialBackoffInterval(async () => {
105
105
  log(`retrying message: ${JSON.stringify(message)}`);
106
- await this._sendMessage(message);
106
+ try {
107
+ await this._sendMessage(message);
108
+ } catch (error) {
109
+ log(`ERROR failed to send message: ${error}`);
110
+ }
107
111
  }, this._retryDelay);
108
112
 
109
113
  const timeout = setTimeout(() => {
@@ -125,7 +129,7 @@ export class MessageRouter implements SignalMessaging {
125
129
  return message.messageId;
126
130
  }
127
131
 
128
- private async _resolveAnswers (message: Message): Promise<void> {
132
+ private async _resolveAnswers (message: SignalMessage): Promise<void> {
129
133
  assert(message.data?.answer?.offerMessageId, 'No offerMessageId');
130
134
  const offerRecord = this._offerRecords.get(message.data.answer.offerMessageId);
131
135
  if (offerRecord) {
@@ -136,10 +140,10 @@ export class MessageRouter implements SignalMessaging {
136
140
  }
137
141
  }
138
142
 
139
- private async _handleOffer (message: Message): Promise<void> {
143
+ private async _handleOffer (message: SignalMessage): Promise<void> {
140
144
  const answer = await this._onOffer(message);
141
145
  answer.offerMessageId = message.messageId;
142
- const answerMessage: Message = {
146
+ const answerMessage: SignalMessage = {
143
147
  id: message.remoteId,
144
148
  remoteId: message.id,
145
149
  topic: message.topic,
@@ -149,17 +153,17 @@ export class MessageRouter implements SignalMessaging {
149
153
  await this._sendReliableMessage(answerMessage);
150
154
  }
151
155
 
152
- private async _handleSignal (message: Message): Promise<void> {
156
+ private async _handleSignal (message: SignalMessage): Promise<void> {
153
157
  assert(message.messageId);
154
158
  await this._onSignal(message);
155
159
  }
156
160
 
157
- private async _handleAcknowledgement (message: Message): Promise<void> {
161
+ private async _handleAcknowledgement (message: SignalMessage): Promise<void> {
158
162
  assert(message.data?.ack?.messageId);
159
163
  this._onAckCallbacks.get(message.data.ack.messageId)?.();
160
164
  }
161
165
 
162
- private async _sendAcknowledgement (message: Message): Promise<void> {
166
+ private async _sendAcknowledgement (message: SignalMessage): Promise<void> {
163
167
  assert(message.messageId);
164
168
  const ackMessage = {
165
169
  id: message.remoteId,
@@ -6,166 +6,144 @@ import { expect, mockFn } from 'earljs';
6
6
  import { it as test, describe } from 'mocha';
7
7
  import waitForExpect from 'wait-for-expect';
8
8
 
9
- import { Awaited, sleep } from '@dxos/async';
9
+ import { sleep } from '@dxos/async';
10
10
  import { PublicKey } from '@dxos/protocols';
11
- import { createTestBroker } from '@dxos/signal';
12
- import { randomInt } from '@dxos/util';
11
+ import { createTestBroker, TestBroker } from '@dxos/signal';
12
+ import { afterTest } from '@dxos/testutils';
13
13
 
14
- import { Answer, Message } from '../proto/gen/dxos/mesh/signal';
14
+ import { SignalMessage } from '../proto/gen/dxos/mesh/signalMessage';
15
15
  import { SignalClient } from './signal-client';
16
16
 
17
- describe('SignalApi', () => {
18
- let topic: PublicKey;
19
- let peer1: PublicKey;
20
- let peer2: PublicKey;
21
- let api1: SignalClient;
22
- let api2: SignalClient;
17
+ describe('SignalClient', () => {
18
+ let broker1: TestBroker;
23
19
 
24
- let broker1: Awaited<ReturnType<typeof createTestBroker>>;
25
- const signalApiPort1 = randomInt(10000, 50000);
26
- const signalApiUrl1 = 'http://0.0.0.0:' + signalApiPort1;
27
-
28
- // code let broker2: ReturnType<typeof createBroker>;
29
- const signalApiPort2 = randomInt(10000, 50000);
30
- const signalApiUrl2 = 'http://0.0.0.0:' + signalApiPort2;
20
+ let broker2: TestBroker;
31
21
 
32
22
  before(async () => {
33
- broker1 = await createTestBroker(signalApiPort1);
34
- // broker2 = await createTestBroker(signalApiPort2);
35
- });
36
-
37
- beforeEach(() => {
38
- topic = PublicKey.random();
39
- peer1 = PublicKey.random();
40
- peer2 = PublicKey.random();
23
+ broker1 = await createTestBroker();
24
+ // broker2 = await await createTestBroker(signalApiPort2);
41
25
  });
42
26
 
43
- after(async function () {
44
- this.timeout(0);
45
- await api1.close();
46
- await broker1.stop();
27
+ after(() => {
28
+ broker1.stop();
47
29
  // code await broker2.stop();
48
30
  });
49
31
 
50
32
  test('message between 2 clients', async () => {
51
- const signalMock1 = mockFn<(msg: Message) => Promise<void>>()
33
+ const topic = PublicKey.random();
34
+ const peer1 = PublicKey.random();
35
+ const peer2 = PublicKey.random();
36
+ const signalMock1 = mockFn<(msg: SignalMessage) => Promise<void>>()
52
37
  .resolvesTo();
53
- api1 = new SignalClient(signalApiUrl1, (async () => {}) as any, signalMock1);
54
- api2 = new SignalClient(signalApiUrl1, (async () => {}) as any, (async () => {}) as any);
38
+ const api1 = new SignalClient(broker1.url(), signalMock1);
39
+ afterTest(() => api1.close());
40
+ const api2 = new SignalClient(broker1.url(), (async () => {}) as any);
41
+ afterTest(() => api2.close());
55
42
 
56
43
  await api1.join(topic, peer1);
57
44
  await api2.join(topic, peer2);
58
45
 
59
- const msg: Message = {
46
+ const msg: SignalMessage = {
60
47
  id: peer2,
61
48
  remoteId: peer1,
62
49
  sessionId: PublicKey.random(),
63
50
  topic,
64
- data: { signal: { json: "foo: 'bar'" } },
65
- messageId: undefined
51
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
66
52
  };
67
53
  await api2.signal(msg);
68
-
69
54
  await waitForExpect(() => {
70
55
  expect(signalMock1).toHaveBeenCalledWith([msg]);
71
56
  }, 4_000);
72
- }).timeout(5_000);
57
+ }).timeout(500);
73
58
 
74
59
  test('join', async () => {
75
- api1 = new SignalClient(signalApiUrl1, (async () => {}) as any, async () => {});
60
+ const topic = PublicKey.random();
61
+ const peer1 = PublicKey.random();
62
+ const peer2 = PublicKey.random();
63
+ const api1 = new SignalClient(broker1.url(), async () => {});
64
+ afterTest(() => api1.close());
65
+ const api2 = new SignalClient(broker1.url(), async () => {});
66
+ afterTest(() => api2.close());
76
67
 
77
- const join = await api1.join(topic, peer1);
78
- expect(join).toEqual([peer1]);
79
-
80
- const join2 = await api1.join(topic, peer2);
81
- expect(join2).toEqual([peer1, peer2]);
82
- }).timeout(1_000);
83
-
84
- test('offer', async () => {
85
- const offerMock = mockFn<(msg: Message) => Promise<Answer>>()
86
- .resolvesTo({ accept: true });
87
- api1 = new SignalClient(signalApiUrl1, offerMock, async () => {});
68
+ const promise1 = api1.swarmEvent.waitFor(([, swarmEvent]) => !!swarmEvent.peerAvailable && peer2.equals(swarmEvent.peerAvailable.peer));
69
+ const promise2 = api2.swarmEvent.waitFor(([, swarmEvent]) => !!swarmEvent.peerAvailable && peer1.equals(swarmEvent.peerAvailable.peer));
88
70
 
89
71
  await api1.join(topic, peer1);
72
+ await api2.join(topic, peer2);
90
73
 
91
- const offer: Message = {
92
- data: { offer: {} },
93
- id: peer2,
94
- remoteId: peer1,
95
- sessionId: PublicKey.random(),
96
- topic
97
- };
98
- const offerResult = await api1.offer(offer);
99
- expect(offerResult).toEqual({ accept: true });
100
- expect(offerMock).toHaveBeenCalledWith([offer]);
101
- }).timeout(5_000);
74
+ await promise1;
75
+ await promise2;
76
+ }).timeout(500);
102
77
 
103
- test('signal', async () => {
104
- const signalMock = mockFn<(msg: Message) => Promise<void>>()
78
+ test('signal to self', async () => {
79
+ const topic = PublicKey.random();
80
+ const peer1 = PublicKey.random();
81
+ const peer2 = PublicKey.random();
82
+ const signalMock = mockFn<(msg: SignalMessage) => Promise<void>>()
105
83
  .resolvesTo();
106
- api1 = new SignalClient(signalApiUrl1, (async () => {}) as any, signalMock);
84
+ const api1 = new SignalClient(broker1.url(), signalMock);
85
+ afterTest(() => api1.close());
107
86
 
108
87
  await api1.join(topic, peer1);
109
88
 
110
- const msg: Message = {
89
+ const msg: SignalMessage = {
111
90
  id: peer2,
112
91
  remoteId: peer1,
113
92
  sessionId: PublicKey.random(),
114
93
  topic,
115
- data: { signal: { json: 'bar' } },
116
- messageId: undefined
94
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
117
95
  };
118
96
  await api1.signal(msg);
119
97
 
120
98
  await waitForExpect(() => {
121
99
  expect(signalMock).toHaveBeenCalledWith([msg]);
122
100
  }, 4_000);
123
- }).timeout(5_000);
101
+ }).timeout(500);
124
102
 
125
103
  test.skip('join across multiple signal servers', async () => {
104
+ const topic = PublicKey.random();
105
+ const peer1 = PublicKey.random();
106
+ const peer2 = PublicKey.random();
126
107
  // This feature is not implemented yet.
127
- api1 = new SignalClient(signalApiUrl1, (async () => {}) as any, async () => {});
128
- api2 = new SignalClient(signalApiUrl2, (async () => {}) as any, async () => {});
108
+ const api1 = new SignalClient(broker1.url(), async () => {});
109
+ afterTest(() => api1.close());
110
+ const api2 = new SignalClient(broker2.url(), async () => {});
111
+ afterTest(() => api2.close());
129
112
 
130
113
  await api1.join(topic, peer1);
131
114
  await api2.join(topic, peer2);
132
115
 
133
- await waitForExpect(async () => {
134
- const peers = await api2.lookup(topic);
135
- expect(peers.length).toEqual(2);
136
- }, 4_000);
116
+ // await waitForExpect(async () => {
117
+ // const peers = await api2.lookup(topic);
118
+ // expect(peers.length).toEqual(2);
119
+ // }, 4_000);
137
120
 
138
- await waitForExpect(async () => {
139
- const peers = await api1.lookup(topic);
140
- expect(peers.length).toEqual(2);
141
- }, 4_000);
121
+ // await waitForExpect(async () => {
122
+ // const peers = await api1.lookup(topic);
123
+ // expect(peers.length).toEqual(2);
124
+ // }, 4_000);
142
125
  }).timeout(5_000);
143
126
 
144
127
  // Skip because communication between signal servers is not yet implemented.
145
128
  test.skip('newly joined peer can receive signals from other signal servers', async () => {
146
- const offerMock = mockFn<(msg: Message) => Promise<Answer>>()
147
- .resolvesTo({ accept: true });
148
- const signalMock = mockFn<(msg: Message) => Promise<void>>()
129
+ const topic = PublicKey.random();
130
+ const peer1 = PublicKey.random();
131
+ const peer2 = PublicKey.random();
132
+ const signalMock = mockFn<(msg: SignalMessage) => Promise<void>>()
149
133
  .resolvesTo();
150
134
 
151
- api1 = new SignalClient(signalApiUrl1, offerMock, async () => {});
152
- api2 = new SignalClient(signalApiUrl2, (async () => {}) as any, signalMock);
135
+ const api1 = new SignalClient(broker1.url(), async () => {});
136
+ afterTest(() => api1.close());
137
+ const api2 = new SignalClient(broker2.url(), signalMock);
138
+ afterTest(() => api2.close());
153
139
 
154
140
  await api1.join(topic, peer1);
155
141
  await sleep(3000);
156
142
  await api2.join(topic, peer2);
157
143
 
158
144
  const sessionId = PublicKey.random();
159
- const answer = await api2.offer({
160
- remoteId: peer1,
161
- id: peer2,
162
- topic,
163
- sessionId,
164
- data: { offer: {} }
165
- });
166
- expect(answer).toEqual({ accept: true });
167
145
 
168
- const msg: Message = {
146
+ const msg: SignalMessage = {
169
147
  id: peer2,
170
148
  remoteId: peer1,
171
149
  sessionId,
@@ -178,4 +156,4 @@ describe('SignalApi', () => {
178
156
  expect(signalMock).toHaveBeenCalledWith([msg]);
179
157
  }, 4_000);
180
158
  }).timeout(5_000);
181
- }).timeout(10_000);
159
+ });