@dxos/messaging 0.6.8-main.3be982f → 0.6.8-staging.77f93a3

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 (60) hide show
  1. package/dist/lib/browser/index.mjs +466 -199
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +456 -197
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/types/src/messenger.blueprint-test.d.ts +4 -0
  8. package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -0
  9. package/dist/types/src/messenger.d.ts +4 -10
  10. package/dist/types/src/messenger.d.ts.map +1 -1
  11. package/dist/types/src/signal-client/signal-client.d.ts +6 -10
  12. package/dist/types/src/signal-client/signal-client.d.ts.map +1 -1
  13. package/dist/types/src/signal-client/signal-local-state.d.ts +2 -10
  14. package/dist/types/src/signal-client/signal-local-state.d.ts.map +1 -1
  15. package/dist/types/src/signal-manager/edge-signal-manager.d.ts +18 -19
  16. package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
  17. package/dist/types/src/signal-manager/index.d.ts +1 -0
  18. package/dist/types/src/signal-manager/index.d.ts.map +1 -1
  19. package/dist/types/src/signal-manager/memory-signal-manager.d.ts +14 -25
  20. package/dist/types/src/signal-manager/memory-signal-manager.d.ts.map +1 -1
  21. package/dist/types/src/signal-manager/signal-manager.d.ts +5 -6
  22. package/dist/types/src/signal-manager/signal-manager.d.ts.map +1 -1
  23. package/dist/types/src/signal-manager/websocket-signal-manager.d.ts +14 -29
  24. package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
  25. package/dist/types/src/signal-methods.d.ts +29 -14
  26. package/dist/types/src/signal-methods.d.ts.map +1 -1
  27. package/dist/types/src/testing/index.d.ts +5 -0
  28. package/dist/types/src/testing/index.d.ts.map +1 -0
  29. package/dist/types/src/testing/test-builder.d.ts +19 -0
  30. package/dist/types/src/testing/test-builder.d.ts.map +1 -0
  31. package/dist/types/src/testing/test-messages.d.ts +6 -0
  32. package/dist/types/src/testing/test-messages.d.ts.map +1 -0
  33. package/dist/types/src/testing/test-peer.d.ts +23 -0
  34. package/dist/types/src/testing/test-peer.d.ts.map +1 -0
  35. package/dist/types/src/testing/utils.d.ts +10 -0
  36. package/dist/types/src/testing/utils.d.ts.map +1 -0
  37. package/package.json +15 -14
  38. package/src/messenger.blueprint-test.ts +346 -0
  39. package/src/messenger.test.ts +26 -362
  40. package/src/messenger.ts +20 -18
  41. package/src/signal-client/signal-client-monitor.ts +3 -3
  42. package/src/signal-client/signal-client.test.ts +56 -52
  43. package/src/signal-client/signal-client.ts +30 -16
  44. package/src/signal-client/signal-local-state.ts +28 -10
  45. package/src/signal-manager/edge-signal-manager.test.ts +31 -35
  46. package/src/signal-manager/edge-signal-manager.ts +88 -36
  47. package/src/signal-manager/index.ts +1 -0
  48. package/src/signal-manager/memory-signal-manager.ts +36 -50
  49. package/src/signal-manager/signal-manager.ts +5 -7
  50. package/src/signal-manager/websocket-signal-manager.test.ts +27 -31
  51. package/src/signal-manager/websocket-signal-manager.ts +34 -65
  52. package/src/signal-methods.ts +33 -11
  53. package/src/testing/index.ts +8 -0
  54. package/src/testing/test-builder.ts +54 -0
  55. package/src/testing/test-messages.ts +24 -0
  56. package/src/testing/test-peer.ts +66 -0
  57. package/src/testing/utils.ts +50 -0
  58. package/dist/types/src/testing.d.ts +0 -40
  59. package/dist/types/src/testing.d.ts.map +0 -1
  60. package/src/testing.ts +0 -120
@@ -2,40 +2,18 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { expect, mockFn } from 'earljs';
6
-
7
- import { asyncTimeout, latch, sleep } from '@dxos/async';
8
- import { type TaggedType } from '@dxos/codec-protobuf';
9
- import { PublicKey } from '@dxos/keys';
10
- import { type TYPES } from '@dxos/protocols';
5
+ import { asyncTimeout } from '@dxos/async';
6
+ import { EdgeClient } from '@dxos/edge-client';
7
+ import { type PublicKey } from '@dxos/keys';
11
8
  import { runTestSignalServer, type SignalServerRunner } from '@dxos/signal';
12
- import { afterAll, beforeAll, describe, test, afterTest } from '@dxos/test';
13
- import { range } from '@dxos/util';
9
+ import { afterAll, afterTest, beforeAll, openAndClose, test, describe } from '@dxos/test';
14
10
 
15
- import { Messenger } from './messenger';
16
- import { WebsocketSignalManager } from './signal-manager';
11
+ import { messengerTests } from './messenger.blueprint-test';
12
+ import { EdgeSignalManager, WebsocketSignalManager } from './signal-manager';
17
13
  import { type Message } from './signal-methods';
18
- import { TestBuilder } from './testing';
19
-
20
- const PAYLOAD_1: TaggedType<TYPES, 'google.protobuf.Any'> = {
21
- '@type': 'google.protobuf.Any',
22
- type_url: 'dxos.Example1',
23
- value: Buffer.from('1'),
24
- };
25
-
26
- const PAYLOAD_2: TaggedType<TYPES, 'google.protobuf.Any'> = {
27
- '@type': 'google.protobuf.Any',
28
- type_url: 'dxos.Example2',
29
- value: Buffer.from('2'),
30
- };
31
-
32
- const PAYLOAD_3: TaggedType<TYPES, 'google.protobuf.Any'> = {
33
- '@type': 'google.protobuf.Any',
34
- type_url: 'dxos.Example3',
35
- value: Buffer.from('3'),
36
- };
14
+ import { PAYLOAD_1, TestBuilder } from './testing';
37
15
 
38
- describe('Messenger', () => {
16
+ describe('Messenger with WebsocketSignalManager', () => {
39
17
  let broker: SignalServerRunner;
40
18
 
41
19
  beforeAll(async () => {
@@ -46,240 +24,20 @@ describe('Messenger', () => {
46
24
  void broker.stop();
47
25
  });
48
26
 
49
- test('Message between peers', async () => {
50
- const builder = new TestBuilder({ signalHosts: [{ server: broker.url() }] });
51
- afterTest(() => builder.close());
52
- const peer1 = builder.createPeer();
53
- await peer1.open();
54
- const peer2 = builder.createPeer();
55
- await peer2.open();
56
-
57
- const message: Message = {
58
- author: peer1.peerId,
59
- recipient: peer2.peerId,
60
- payload: PAYLOAD_1,
61
- };
62
-
63
- const promise = peer2.waitTillReceive(message);
64
-
65
- await peer1.messenger.sendMessage(message);
66
-
67
- await asyncTimeout(promise, 1_000);
68
- }).timeout(1_000);
69
-
70
- test('Message 3 peers', async () => {
71
- const builder = new TestBuilder({ signalHosts: [{ server: broker.url() }] });
72
- afterTest(() => builder.close());
73
- const peer1 = builder.createPeer();
74
- await peer1.open();
75
- const peer2 = builder.createPeer();
76
- await peer2.open();
77
- const peer3 = builder.createPeer();
78
- await peer3.open();
79
-
80
- {
81
- const message: Message = {
82
- author: peer1.peerId,
83
- recipient: peer2.peerId,
84
- payload: PAYLOAD_1,
85
- };
86
-
87
- const promise = peer2.waitTillReceive(message);
88
- await peer1.messenger.sendMessage(message);
89
- await asyncTimeout(promise, 1_000);
90
- }
91
-
92
- {
93
- const message: Message = {
94
- author: peer1.peerId,
95
- recipient: peer3.peerId,
96
- payload: PAYLOAD_2,
97
- };
98
-
99
- const promise = peer3.waitTillReceive(message);
100
- await peer1.messenger.sendMessage(message);
101
- await asyncTimeout(promise, 1_000);
102
- }
103
-
104
- {
105
- const message: Message = {
106
- author: peer2.peerId,
107
- recipient: peer1.peerId,
108
- payload: PAYLOAD_3,
109
- };
110
-
111
- const promise = peer1.waitTillReceive(message);
112
- await peer2.messenger.sendMessage(message);
113
- await asyncTimeout(promise, 1_000);
114
- }
115
- }).timeout(1_000);
116
-
117
- test('Message routing', async () => {
118
- const builder = new TestBuilder({ signalHosts: [{ server: broker.url() }] });
119
- afterTest(() => builder.close());
120
- const peer1 = builder.createPeer();
121
- await peer1.open();
122
- const peer2 = builder.createPeer();
123
- await peer2.open();
124
-
125
- // Subscribe first listener for second messenger.
126
- const onMessage1 = mockFn<(message: Message) => Promise<void>>().resolvesTo();
127
- await peer2.messenger.listen({
128
- peerId: peer2.peerId,
129
- payloadType: PAYLOAD_1.type_url,
130
- onMessage: onMessage1,
131
- });
132
-
133
- // Subscribe first listener for second messenger.
134
- const onMessage2 = mockFn<(message: Message) => Promise<void>>().resolvesTo();
135
- await peer2.messenger.listen({
136
- peerId: peer2.peerId,
137
- payloadType: PAYLOAD_1.type_url,
138
- onMessage: onMessage2,
139
- });
140
-
141
- // Subscribe third listener for second messenger.
142
- const onMessage3 = mockFn<(message: Message) => Promise<void>>().resolvesTo();
143
- await peer2.messenger.listen({
144
- peerId: peer2.peerId,
145
- payloadType: PAYLOAD_2.type_url,
146
- onMessage: onMessage3,
147
- });
148
-
149
- // Message from the 1st peer to the 2nd peer with payload type "1".
150
- {
151
- const message: Message = {
152
- author: peer1.peerId,
153
- recipient: peer2.peerId,
154
- payload: PAYLOAD_1,
155
- };
156
- const promise = peer2.waitTillReceive(message);
157
- await peer1.messenger.sendMessage(message);
158
-
159
- // 3 listeners (default one that was returned by setupPeer() and 2 that listen for type "1") should receive message.
160
- await asyncTimeout(promise, 1_000);
161
- expect(onMessage1).toHaveBeenCalledWith([message]);
162
- expect(onMessage2).toHaveBeenCalledWith([message]);
163
- expect(onMessage3).not.toHaveBeenCalledWith([message]);
164
- }
165
- }).timeout(1_000);
166
-
167
- test('Unsubscribe listener', async () => {
168
- const builder = new TestBuilder({ signalHosts: [{ server: broker.url() }] });
169
- afterTest(() => builder.close());
170
- const peer1 = builder.createPeer();
171
- await peer1.open();
172
- const peer2 = builder.createPeer();
173
- await peer2.open();
174
-
175
- // Subscribe first listener for second messenger.
176
- const messages1: Message[] = [];
177
- await peer2.messenger.listen({
178
- peerId: peer2.peerId,
179
- payloadType: PAYLOAD_1.type_url,
180
- onMessage: async (message) => {
181
- messages1.push(message);
182
- },
183
- });
184
-
185
- // Subscribe first listener for second messenger.
186
- const messages2: Message[] = [];
187
- const listenerHandle2 = await peer2.messenger.listen({
188
- peerId: peer2.peerId,
189
- payloadType: PAYLOAD_1.type_url,
190
- onMessage: async (message) => {
191
- messages2.push(message);
192
- },
193
- });
194
-
195
- // Message from the 1st peer to the 2nd peer with payload type "1".
196
- {
197
- const message: Message = {
198
- author: peer1.peerId,
199
- recipient: peer2.peerId,
200
- payload: PAYLOAD_1,
201
- };
202
-
203
- const receivePromise = peer2.waitTillReceive(message);
204
- await peer1.messenger.sendMessage(message);
205
-
206
- // 2 subscribed listeners should receive message.
207
- await asyncTimeout(receivePromise, 1_000);
208
- expect(messages1[0]).toEqual(message);
209
- expect(messages2[0]).toEqual(message);
210
- }
211
-
212
- // Unsubscribe second listener.
213
- await listenerHandle2.unsubscribe();
214
-
215
- // Message from the 1st peer to the 2nd peer with payload type "1".
216
- {
217
- const message: Message = {
218
- author: peer1.peerId,
219
- recipient: peer2.peerId,
220
- payload: PAYLOAD_1,
221
- };
222
-
223
- const receivePromise = peer2.waitTillReceive(message);
224
- await peer1.messenger.sendMessage(message);
225
-
226
- // 1 listener that was not unsubscribed should receive message.
227
- await asyncTimeout(receivePromise, 1_000);
228
- expect(messages1[1]).toEqual(message);
229
- expect(messages1.length).toEqual(2);
230
- expect(messages2.length).toEqual(1);
231
- }
232
- })
233
- .tag('flaky')
234
- .timeout(1_000);
235
-
236
- test('re-entrant message', async () => {
237
- const builder = new TestBuilder({ signalHosts: [{ server: broker.url() }] });
238
- afterTest(() => builder.close());
239
- const peer1 = builder.createPeer();
240
- await peer1.open();
241
- const peer2 = builder.createPeer();
242
- await peer2.open();
243
-
244
- const message: Message = {
245
- author: peer1.peerId,
246
- recipient: peer2.peerId,
247
- payload: PAYLOAD_1,
248
- };
249
-
250
- {
251
- const receivePromise = peer2.waitTillReceive(message);
252
- await peer1.messenger.sendMessage(message);
253
- await asyncTimeout(receivePromise, 1_000);
254
- }
255
-
256
- {
257
- //
258
- // Close and reopen peer1
259
- //
260
-
261
- await peer2.close();
262
- await peer2.open();
263
- }
264
-
265
- {
266
- const receivePromise = peer2.waitTillReceive(message);
267
- await peer1.messenger.sendMessage(message);
268
- await asyncTimeout(receivePromise, 1_000);
269
- }
270
- }).timeout(1_000);
27
+ messengerTests(async () => new WebsocketSignalManager([{ server: broker.url() }]));
271
28
 
272
29
  test('Message with broken signal server', async () => {
273
- const builder = new TestBuilder({ signalHosts: [{ server: 'ws://broken.kube.' }, { server: broker.url() }] });
30
+ const builder = new TestBuilder({
31
+ signalManagerFactory: async () =>
32
+ new WebsocketSignalManager([{ server: 'ws://broken.kube.' }, { server: broker.url() }]),
33
+ });
274
34
  afterTest(() => builder.close());
275
- const peer1 = builder.createPeer();
276
- await peer1.open();
277
- const peer2 = builder.createPeer();
278
- await peer2.open();
35
+ const peer1 = await builder.createPeer();
36
+ const peer2 = await builder.createPeer();
279
37
 
280
38
  const message: Message = {
281
- author: peer1.peerId,
282
- recipient: peer2.peerId,
39
+ author: peer1.peerInfo,
40
+ recipient: peer2.peerInfo,
283
41
  payload: PAYLOAD_1,
284
42
  };
285
43
 
@@ -289,110 +47,16 @@ describe('Messenger', () => {
289
47
  await asyncTimeout(receivePromise, 1_000);
290
48
  }
291
49
  }).timeout(1_000);
50
+ });
292
51
 
293
- describe('Reliability', () => {
294
- test('message with non reliable connection', async () => {
295
- // Simulate unreliable connection.
296
- // Only each 3rd message is sent.
297
- let i = 0;
298
- const unreliableConnection = (data: Message): Message[] => {
299
- i++;
300
- if (i % 3 !== 0) {
301
- return [data];
302
- }
303
- return [];
304
- };
305
-
306
- const builder = new TestBuilder({
307
- signalHosts: [{ server: broker.url() }],
308
- messageDisruption: unreliableConnection,
309
- });
310
- afterTest(() => builder.close());
311
- const peer1 = builder.createPeer();
312
- await peer1.open();
313
- const peer2 = builder.createPeer();
314
- await peer2.open();
315
-
316
- const message = {
317
- author: peer2.peerId,
318
- recipient: peer1.peerId,
319
- payload: PAYLOAD_1,
320
- };
321
-
322
- const receivePromise = peer1.defaultReceived.waitForCount(3);
323
- // Sending 3 messages.
324
- Array(3)
325
- .fill(0)
326
- .forEach(async () => {
327
- await peer2.messenger.sendMessage(message);
328
- });
329
-
330
- // expect to receive 3 messages.
331
- await receivePromise;
332
- }).timeout(5_000);
333
-
334
- test('ignoring doubled messages', async () => {
335
- // Message got doubled going through signal network.
336
- const doublingMessage = (data: Message) => [data, data];
337
-
338
- const builder = new TestBuilder({ signalHosts: [{ server: broker.url() }], messageDisruption: doublingMessage });
339
- afterTest(() => builder.close());
340
- const peer1 = builder.createPeer();
341
- await peer1.open();
342
- const peer2 = builder.createPeer();
343
- await peer2.open();
344
-
345
- const [promise, inc] = latch({ count: 1 });
346
- let count = 0;
347
- peer1.defaultReceived.on((msg) => {
348
- count = inc();
349
- });
350
- // sending message.
351
- await peer2.messenger.sendMessage({
352
- author: peer2.peerId,
353
- recipient: peer1.peerId,
354
- payload: PAYLOAD_1,
355
- });
356
- // expect to receive 1 message.
357
- await asyncTimeout(promise(), 1000);
358
- expect(count).toEqual(1);
359
- });
360
- }).timeout(5_000);
361
-
362
- describe('load', () => {
363
- test('many connections to KUBE', async () => {
364
- // let numReceived = 0;
365
- void range(100).map(async () => {
366
- const peerId = PublicKey.random();
367
- const newLocal = new WebsocketSignalManager([{ server: 'wss://dev.kube.dxos.org/.well-known/dx/signal' }]);
368
- await newLocal.open();
369
- const messenger = new Messenger({ signalManager: newLocal });
370
-
371
- // newLocal.join({
372
- // topic: peerId,
373
- // peerId: peerId,
374
- // })
375
-
376
- await messenger.listen({
377
- peerId,
378
- onMessage: async (msg) => {
379
- // console.log(++numReceived);
380
- },
381
- });
52
+ // TODO(mykola): Expects wrangler dev in edge repo to run. Skip to pass CI.
53
+ describe.skip('Messenger with EdgeSignalManager', () => {
54
+ const edgeSignalFactory = async (identityKey: PublicKey, deviceKey: PublicKey) => {
55
+ const client = new EdgeClient(identityKey, deviceKey, { socketEndpoint: 'ws://localhost:8787' });
56
+ await openAndClose(client);
382
57
 
383
- void messenger.sendMessage({
384
- author: peerId,
385
- recipient: peerId,
386
- payload: {
387
- type_url: 'dxos.test',
388
- value: Buffer.from('TEST'),
389
- },
390
- });
391
- });
58
+ return new EdgeSignalManager({ edgeConnection: client });
59
+ };
392
60
 
393
- await sleep(1000000);
394
- })
395
- .tag('stress')
396
- .timeout(5_000);
397
- });
61
+ messengerTests(edgeSignalFactory);
398
62
  });
package/src/messenger.ts CHANGED
@@ -14,10 +14,10 @@ import { ComplexMap, ComplexSet } from '@dxos/util';
14
14
 
15
15
  import { MessengerMonitor } from './messenger-monitor';
16
16
  import { type SignalManager } from './signal-manager';
17
- import { type Message } from './signal-methods';
17
+ import { type PeerInfo, type Message } from './signal-methods';
18
18
  import { MESSAGE_TIMEOUT } from './timeouts';
19
19
 
20
- export type OnMessage = (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;
20
+ export type OnMessage = (params: Message) => Promise<void>;
21
21
 
22
22
  export interface MessengerOptions {
23
23
  signalManager: SignalManager;
@@ -36,12 +36,12 @@ export class Messenger {
36
36
  private readonly _monitor = new MessengerMonitor();
37
37
  private readonly _signalManager: SignalManager;
38
38
  // { peerId, payloadType } => listeners set
39
- private readonly _listeners = new ComplexMap<{ peerId: PublicKey; payloadType: string }, Set<OnMessage>>(
40
- ({ peerId, payloadType }) => peerId.toHex() + payloadType,
39
+ private readonly _listeners = new ComplexMap<{ peerId: string; payloadType: string }, Set<OnMessage>>(
40
+ ({ peerId, payloadType }) => peerId + payloadType,
41
41
  );
42
42
 
43
43
  // peerId => listeners set
44
- private readonly _defaultListeners = new ComplexMap<PublicKey, Set<OnMessage>>(PublicKey.hash);
44
+ private readonly _defaultListeners = new Map<string, Set<OnMessage>>();
45
45
 
46
46
  private readonly _onAckCallbacks = new ComplexMap<PublicKey, () => void>(PublicKey.hash);
47
47
 
@@ -166,30 +166,31 @@ export class Messenger {
166
166
  * @param payloadType if not specified, onMessage will be subscribed to all types of messages.
167
167
  */
168
168
  async listen({
169
- peerId,
169
+ peer,
170
170
  payloadType,
171
171
  onMessage,
172
172
  }: {
173
- peerId: PublicKey;
173
+ peer: PeerInfo;
174
174
  payloadType?: string;
175
175
  onMessage: OnMessage;
176
176
  }): Promise<ListeningHandle> {
177
177
  invariant(!this._closed, 'Closed');
178
178
 
179
- await this._signalManager.subscribeMessages(peerId);
179
+ await this._signalManager.subscribeMessages(peer);
180
180
  let listeners: Set<OnMessage> | undefined;
181
+ invariant(peer.peerKey, 'Peer key is required');
181
182
 
182
183
  if (!payloadType) {
183
- listeners = this._defaultListeners.get(peerId);
184
+ listeners = this._defaultListeners.get(peer.peerKey);
184
185
  if (!listeners) {
185
186
  listeners = new Set();
186
- this._defaultListeners.set(peerId, listeners);
187
+ this._defaultListeners.set(peer.peerKey, listeners);
187
188
  }
188
189
  } else {
189
- listeners = this._listeners.get({ peerId, payloadType });
190
+ listeners = this._listeners.get({ peerId: peer.peerKey, payloadType });
190
191
  if (!listeners) {
191
192
  listeners = new Set();
192
- this._listeners.set({ peerId, payloadType }, listeners);
193
+ this._listeners.set({ peerId: peer.peerKey, payloadType }, listeners);
193
194
  }
194
195
  }
195
196
 
@@ -207,8 +208,8 @@ export class Messenger {
207
208
  recipient,
208
209
  reliablePayload,
209
210
  }: {
210
- author: PublicKey;
211
- recipient: PublicKey;
211
+ author: PeerInfo;
212
+ recipient: PeerInfo;
212
213
  reliablePayload: ReliablePayload;
213
214
  }): Promise<void> {
214
215
  await this._signalManager.sendMessage({
@@ -275,8 +276,8 @@ export class Messenger {
275
276
  recipient,
276
277
  messageId,
277
278
  }: {
278
- author: PublicKey;
279
- recipient: PublicKey;
279
+ author: PeerInfo;
280
+ recipient: PeerInfo;
280
281
  messageId: PublicKey;
281
282
  }): Promise<void> {
282
283
  log('sending ACK', { messageId, from: recipient, to: author });
@@ -293,7 +294,8 @@ export class Messenger {
293
294
 
294
295
  private async _callListeners(message: Message): Promise<void> {
295
296
  {
296
- const defaultListenerMap = this._defaultListeners.get(message.recipient);
297
+ invariant(message.recipient.peerKey, 'Peer key is required');
298
+ const defaultListenerMap = this._defaultListeners.get(message.recipient.peerKey);
297
299
  if (defaultListenerMap) {
298
300
  for (const listener of defaultListenerMap) {
299
301
  await listener(message);
@@ -303,7 +305,7 @@ export class Messenger {
303
305
 
304
306
  {
305
307
  const listenerMap = this._listeners.get({
306
- peerId: message.recipient,
308
+ peerId: message.recipient.peerKey,
307
309
  payloadType: message.payload.type_url,
308
310
  });
309
311
  if (listenerMap) {
@@ -99,13 +99,13 @@ export class SignalClientMonitor {
99
99
 
100
100
  const getByteCount = (message: Message): number => {
101
101
  return (
102
- message.author.asUint8Array().byteLength +
103
- message.recipient.asUint8Array().byteLength +
102
+ message.author.peerKey.length +
103
+ message.recipient.peerKey.length +
104
104
  message.payload.type_url.length +
105
105
  message.payload.value.length
106
106
  );
107
107
  };
108
108
 
109
109
  const createIdentityTags = (message: Message) => {
110
- return { peer: message.author.toHex() };
110
+ return { peer: message.author.peerKey };
111
111
  };