@spider-mesh/ws 2.0.42 → 2.0.45

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 (77) hide show
  1. package/README.md +23 -7
  2. package/build/src/BaseWebsocketTransporter.d.ts +5 -6
  3. package/build/src/BaseWebsocketTransporter.js +33 -42
  4. package/build/src/BaseWebsocketTransporter.js.map +1 -1
  5. package/build/src/WebsocketRelayServer.js +119 -48
  6. package/build/src/WebsocketRelayServer.js.map +1 -1
  7. package/build/src/websocketProtocol.d.ts +5 -25
  8. package/build/src/websocketProtocol.js.map +1 -1
  9. package/build/tsconfig.tsbuildinfo +1 -1
  10. package/package.json +3 -3
  11. package/tsconfig.json +1 -0
  12. package/build/examples/helpers/createMesh.d.ts +0 -13
  13. package/build/examples/helpers/createMesh.js +0 -19
  14. package/build/examples/helpers/createMesh.js.map +0 -1
  15. package/build/examples/websocket-client.d.ts +0 -1
  16. package/build/examples/websocket-client.js +0 -17
  17. package/build/examples/websocket-client.js.map +0 -1
  18. package/build/examples/websocket-e2e-client.d.ts +0 -1
  19. package/build/examples/websocket-e2e-client.js +0 -36
  20. package/build/examples/websocket-e2e-client.js.map +0 -1
  21. package/build/examples/websocket-e2e-matrix-client.d.ts +0 -1
  22. package/build/examples/websocket-e2e-matrix-client.js +0 -66
  23. package/build/examples/websocket-e2e-matrix-client.js.map +0 -1
  24. package/build/examples/websocket-e2e-matrix-provider.d.ts +0 -1
  25. package/build/examples/websocket-e2e-matrix-provider.js +0 -41
  26. package/build/examples/websocket-e2e-matrix-provider.js.map +0 -1
  27. package/build/examples/websocket-e2e-matrix-test.d.ts +0 -1
  28. package/build/examples/websocket-e2e-matrix-test.js +0 -85
  29. package/build/examples/websocket-e2e-matrix-test.js.map +0 -1
  30. package/build/examples/websocket-e2e-provider.d.ts +0 -1
  31. package/build/examples/websocket-e2e-provider.js +0 -22
  32. package/build/examples/websocket-e2e-provider.js.map +0 -1
  33. package/build/examples/websocket-e2e-reverse-client.d.ts +0 -1
  34. package/build/examples/websocket-e2e-reverse-client.js +0 -21
  35. package/build/examples/websocket-e2e-reverse-client.js.map +0 -1
  36. package/build/examples/websocket-e2e-reverse-server.d.ts +0 -1
  37. package/build/examples/websocket-e2e-reverse-server.js +0 -36
  38. package/build/examples/websocket-e2e-reverse-server.js.map +0 -1
  39. package/build/examples/websocket-e2e-reverse-test.d.ts +0 -1
  40. package/build/examples/websocket-e2e-reverse-test.js +0 -85
  41. package/build/examples/websocket-e2e-reverse-test.js.map +0 -1
  42. package/build/examples/websocket-e2e-round-robin-client.d.ts +0 -1
  43. package/build/examples/websocket-e2e-round-robin-client.js +0 -41
  44. package/build/examples/websocket-e2e-round-robin-client.js.map +0 -1
  45. package/build/examples/websocket-e2e-round-robin-test.d.ts +0 -1
  46. package/build/examples/websocket-e2e-round-robin-test.js +0 -93
  47. package/build/examples/websocket-e2e-round-robin-test.js.map +0 -1
  48. package/build/examples/websocket-e2e-test.d.ts +0 -1
  49. package/build/examples/websocket-e2e-test.js +0 -85
  50. package/build/examples/websocket-e2e-test.js.map +0 -1
  51. package/build/examples/websocket-provider.d.ts +0 -1
  52. package/build/examples/websocket-provider.js +0 -20
  53. package/build/examples/websocket-provider.js.map +0 -1
  54. package/build/examples/websocket-server.d.ts +0 -1
  55. package/build/examples/websocket-server.js +0 -6
  56. package/build/examples/websocket-server.js.map +0 -1
  57. package/build/examples/websocket-smoke-test.d.ts +0 -1
  58. package/build/examples/websocket-smoke-test.js +0 -169
  59. package/build/examples/websocket-smoke-test.js.map +0 -1
  60. package/build/tests/helpers/runBunScript.d.ts +0 -6
  61. package/build/tests/helpers/runBunScript.js +0 -46
  62. package/build/tests/helpers/runBunScript.js.map +0 -1
  63. package/build/tests/websocket-spidermesh-matrix.e2e.test.d.ts +0 -1
  64. package/build/tests/websocket-spidermesh-matrix.e2e.test.js +0 -13
  65. package/build/tests/websocket-spidermesh-matrix.e2e.test.js.map +0 -1
  66. package/build/tests/websocket-spidermesh-reverse.e2e.test.d.ts +0 -1
  67. package/build/tests/websocket-spidermesh-reverse.e2e.test.js +0 -9
  68. package/build/tests/websocket-spidermesh-reverse.e2e.test.js.map +0 -1
  69. package/build/tests/websocket-spidermesh-round-robin.e2e.test.d.ts +0 -1
  70. package/build/tests/websocket-spidermesh-round-robin.e2e.test.js +0 -20
  71. package/build/tests/websocket-spidermesh-round-robin.e2e.test.js.map +0 -1
  72. package/build/tests/websocket-spidermesh.e2e.test.d.ts +0 -1
  73. package/build/tests/websocket-spidermesh.e2e.test.js +0 -9
  74. package/build/tests/websocket-spidermesh.e2e.test.js.map +0 -1
  75. package/build/tests/websocket-transporter.e2e.test.d.ts +0 -1
  76. package/build/tests/websocket-transporter.e2e.test.js +0 -9
  77. package/build/tests/websocket-transporter.e2e.test.js.map +0 -1
package/README.md CHANGED
@@ -120,13 +120,23 @@ console.log(await greeter.hello('world'))
120
120
 
121
121
  Current responsibilities:
122
122
 
123
- - maintain relay connections
123
+ - maintain relay connections with automatic reconnect
124
124
  - expose `status$` for per-URL connection status
125
- - send and receive RPC frames
126
- - propagate discovery `hello` and `offline` frames
125
+ - send and receive RPC frames; the relay routes by `destination_node_id` when present, otherwise selects a provider by service name with round-robin
126
+ - propagate discovery `hello` and `offline` frames; suppresses duplicate `discovered` events for already-known nodes
127
127
  - forward pubsub messages and subscription changes
128
128
  - integrate directly with `mesh.registerTransporter(transporter)`
129
129
 
130
+ Current send contract:
131
+
132
+ ```ts
133
+ send(packet: RpcRequestPacket | RpcResponsePacket): Promise<{ cancel: () => void }>
134
+ ```
135
+
136
+ For `request` packets, the returned `cancel()` sends a cancel frame to the relay over the same socket. The relay routes it to the provider via an internal `request_id → socket` map. The provider stops the running Observable on receipt. `SpiderMesh` calls `cancel()` automatically when a subscriber unsubscribes before the stream completes.
137
+
138
+ Throws `MICROSERVICE_OFFLINE` immediately when a registry is linked but no node is available for the requested service.
139
+
130
140
  Supported options:
131
141
 
132
142
  - `heartbeatIntervalMs`
@@ -149,16 +159,22 @@ Supported options:
149
159
  The package includes:
150
160
 
151
161
  - binary transporter smoke coverage
152
- - connection status coverage
162
+ - WebSocket connection status coverage
153
163
  - SpiderMesh RPC e2e coverage
154
164
  - reverse RPC coverage
155
- - matrix coverage for sync/async/observable/error paths
156
- - multi-provider routing coverage
165
+ - matrix coverage for sync / async / Observable / error return paths
166
+ - multi-provider round-robin routing coverage
167
+ - RPC timeout coverage
168
+ - fallback value coverage
169
+ - provider disconnect / offline detection coverage
170
+ - concurrent RPC coverage
171
+ - provider reconnect coverage
172
+ - failover coverage (3 nodes → kill 1 → 2 nodes continue serving)
157
173
 
158
174
  Run the full suite with:
159
175
 
160
176
  ```bash
161
- bun run test:e2e
177
+ bun test
162
178
  ```
163
179
 
164
180
  Build with:
@@ -1,5 +1,5 @@
1
1
  import { BehaviorSubject, Observable, Subject } from 'rxjs';
2
- import type { DiscoveryTransporter, MdnsMessage, NodeMetadata, PubsubTransporter, RpcPacket, RpcTransporter } from '@spider-mesh/core';
2
+ import type { DiscoveryTransporter, MdnsMessage, PubsubTransporter, RpcRequestPacket, RpcResponsePacket, RpcTransporter, SpiderMeshNode } from '@spider-mesh/core';
3
3
  export type WebsocketTransporterOptions = {
4
4
  heartbeatIntervalMs?: number;
5
5
  reconnectIntervalMs?: number;
@@ -23,14 +23,13 @@ export declare abstract class BaseWebsocketTransporter extends Subject<any> impl
23
23
  constructor(options?: WebsocketTransporterOptions);
24
24
  connect(url: string): void;
25
25
  close(url: string): void;
26
- send(packet: RpcPacket, node_id?: string): Promise<void>;
27
- broadcast(data: MdnsMessage<NodeMetadata>): Promise<void>;
26
+ send(packet: RpcRequestPacket | RpcResponsePacket): Promise<{
27
+ cancel: () => void;
28
+ }>;
29
+ broadcast(data: MdnsMessage<SpiderMeshNode>): Promise<void>;
28
30
  publish<T>(topic: string, data: T): Promise<void>;
29
31
  listen<T>(topic: string): Observable<T>;
30
32
  protected abstract createSocket(url: string): Promise<WebSocketLike> | WebSocketLike;
31
- private on_request;
32
- private on_response;
33
- private on_cancel;
34
33
  private on_rpc;
35
34
  private on_hello;
36
35
  private on_offline;
@@ -9,6 +9,7 @@ export class BaseWebsocketTransporter extends Subject {
9
9
  #topics = new Map();
10
10
  #nodes = new Map();
11
11
  #me$ = new ReplaySubject(1);
12
+ #localNodeId;
12
13
  status$ = new BehaviorSubject(new Map());
13
14
  constructor(options = {}) {
14
15
  super();
@@ -32,19 +33,30 @@ export class BaseWebsocketTransporter extends Subject {
32
33
  this.#disconnectSocket(socket);
33
34
  }
34
35
  }
35
- async send(packet, node_id) {
36
- const socket = this.#selectRpcSocket(node_id || packet.target_node_id);
36
+ async send(packet) {
37
+ const socket = this.#selectRpcSocket(packet.destination_node_id);
37
38
  await this.#sendFrame(socket, {
38
- type: packet.kind,
39
- target_id: node_id || packet.target_node_id,
40
- payload: this.#encodeRpcPacket(packet),
39
+ type: 'rpc',
40
+ data: packet,
41
41
  });
42
+ if (packet.kind === 'request') {
43
+ return {
44
+ cancel: () => {
45
+ void this.#sendFrame(socket, {
46
+ type: 'rpc',
47
+ data: { kind: 'cancel', request_id: packet.request_id },
48
+ }).catch(() => undefined);
49
+ }
50
+ };
51
+ }
52
+ return { cancel: () => { } };
42
53
  }
43
54
  async broadcast(data) {
44
55
  const localNode = {
45
56
  ...data.node,
46
57
  node_id: data.sender_id,
47
58
  };
59
+ this.#localNodeId = localNode.node_id;
48
60
  this.#me$.next(localNode);
49
61
  }
50
62
  async publish(topic, data) {
@@ -122,34 +134,28 @@ export class BaseWebsocketTransporter extends Subject {
122
134
  delay: () => timer(this.options.reconnectIntervalMs || 1000),
123
135
  }));
124
136
  }
125
- on_request(_url, frame) {
126
- this.on_rpc(frame);
127
- }
128
- on_response(_url, frame) {
129
- this.on_rpc(frame);
130
- }
131
- on_cancel(_url, frame) {
132
- this.on_rpc(frame);
133
- }
134
- on_rpc(frame) {
135
- const packet = this.#decodeRpcPacket(frame);
136
- if (!packet)
137
+ on_rpc(_url, frame) {
138
+ if (frame.type !== 'rpc')
137
139
  return;
138
- this.next({
139
- rpc: {
140
- node_id: frame.sender_id,
141
- packet
142
- }
143
- });
140
+ this.next({ rpc: frame.data });
144
141
  }
145
142
  on_hello(url, frame) {
146
143
  const node = frame.me;
147
- this.#nodes.set(node.node_id, {
148
- node,
149
- relayUrl: url,
150
- });
144
+ if (node.node_id === this.#localNodeId)
145
+ return;
146
+ const existing = this.#nodes.get(node.node_id);
147
+ this.#nodes.set(node.node_id, { node, relayUrl: url });
148
+ if (existing && this.#hasSameServices(existing.node, node))
149
+ return;
151
150
  this.next({ discovered: node });
152
151
  }
152
+ #hasSameServices(a, b) {
153
+ const aKeys = Object.keys(a.services || {}).sort();
154
+ const bKeys = Object.keys(b.services || {}).sort();
155
+ if (aKeys.length !== bKeys.length)
156
+ return false;
157
+ return aKeys.every((k, i) => k === bKeys[i]);
158
+ }
153
159
  on_offline(url, frame) {
154
160
  const current = this.#nodes.get(frame.node_id);
155
161
  if (current?.relayUrl === url) {
@@ -201,21 +207,6 @@ export class BaseWebsocketTransporter extends Subject {
201
207
  topics,
202
208
  });
203
209
  }
204
- #encodeRpcPacket(packet) {
205
- const { kind: _, ...payload } = packet;
206
- return encode(payload);
207
- }
208
- #decodeRpcPacket(frame) {
209
- try {
210
- return {
211
- kind: frame.type,
212
- ...decode(frame.payload),
213
- };
214
- }
215
- catch {
216
- return null;
217
- }
218
- }
219
210
  async #sendFrame(socket, frame) {
220
211
  if (!socket || socket.readyState !== WEBSOCKET_OPEN) {
221
212
  throw new Error('WebSocket is not connected');
@@ -1 +1 @@
1
- {"version":3,"file":"BaseWebsocketTransporter.js","sourceRoot":"","sources":["../../src/BaseWebsocketTransporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,KAAK,EAAU,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,EAAc,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAgB,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAEhO,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAA2F,MAAM,wBAAwB,CAAA;AAoC3L,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAC9B,MAAM,cAAc,GAAG,CAAC,CAAA;AAExB,MAAM,OAAgB,wBAAyB,SAAQ,OAAY;IAOzC;IANtB,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAA;IACjD,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAA;IACxC,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAA;IACrC,IAAI,GAAG,IAAI,aAAa,CAAiB,CAAC,CAAC,CAAA;IAC3B,OAAO,GAAG,IAAI,eAAe,CAAsB,IAAI,GAAG,EAAE,CAAC,CAAA;IAE7E,YAAsB,UAAuC,EAAE;QAC3D,KAAK,EAAE,CAAA;QADW,YAAO,GAAP,OAAO,CAAkC;IAE/D,CAAC;IAED,OAAO,CAAC,GAAW;QACf,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAM;QAEtC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE;YACvB,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE;SAC5D,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,GAAW;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,CAAA;QAEjC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;QAEjC,UAAU,EAAE,YAAY,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,IAAI,CAAC,MAAiB,EAAE,OAAgB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,CAAA;QACtE,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,OAAO,IAAI,MAAM,CAAC,cAAc;YAC3C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;SACzC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAA+B;QAC3C,MAAM,SAAS,GAAG;YACd,GAAI,IAAI,CAAC,IAAkC;YAC3C,OAAO,EAAE,IAAI,CAAC,SAAS;SACD,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,KAAa,EAAE,IAAO;QACnC,MAAM,IAAI,CAAC,eAAe,CAAC;YACvB,IAAI,EAAE,SAAS;YACf,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;SACxB,CAAC,CAAA;IACN,CAAC;IAED,MAAM,CAAI,KAAa;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAA+B,CAAA;QACjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,OAAO,GAAG,IAAI,OAAO,EAAK,CAAA;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;gBACtB,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;gBAEzD,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAC9B,QAAQ,CAAC,GAAG,EAAE;oBACV,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO;wBAAE,OAAM;oBAExD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC1B,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;gBAClE,CAAC,CAAC,CACL,CAAA;YACL,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBACV,mBAAmB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC;aAC7E,CAAC,CAAC,CAAA;YAEH,KAAK,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAClC,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAA;IACvB,CAAC;IAID,qBAAqB,CAAC,GAAW;QAC7B,OAAO,KAAK,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;YAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAC,IAAI,CACH,SAAS,CAAC,MAAM,CAAC,EAAE;YACf,MAAM,OAAO,GAAG,SAAS,CAAC,MAAe,EAAE,OAAO,CAAC,CAAC,IAAI,CACpD,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,GAAG,EAAE;gBACL,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;YACnD,CAAC,CAAC,EACF,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC,CAAC,CACjF,CAAA;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAe,EAAE,OAAO,CAAC,CAAC,IAAI,CACrD,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,GAAG,EAAE;gBACL,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC3C,CAAC,CAAC,EACF,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC,CAAC,CACjF,CAAA;YAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAE7D,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAC7C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC7C,OAAO,UAAU,CAAC,MAAM,CAAA;gBAC5B,CAAC;YACL,CAAC,CAAA;YAED,OAAO,SAAS,CAAC,MAAe,EAAE,MAAM,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EACjB,SAAS,CAAC,cAAc,CAAC,EACzB,GAAG,CAAC,GAAG,EAAE;gBACL,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAC7C,IAAI,UAAU,EAAE,CAAC;oBACb,UAAU,CAAC,MAAM,GAAG,MAAM,CAAA;gBAC9B,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;YAC/C,CAAC,CAAC,EACF,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CACV,GAAG,CAAC,SAAS,CAAC,EAAE;gBACZ,KAAK,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;gBAC9D,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC7D,CAAC,CAAC,EACF,cAAc,EAAE,CACnB,EACD,SAAS,CAAqB,MAAe,EAAE,SAAS,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,KAAK,CAAC,EAAE;gBACR,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;gBAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACnC,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAElB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,EAAoC,CAAmE,CAAA;gBAC5I,IAAI,CAAC,OAAO;oBAAE,OAAM;gBAEpB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;YAClC,CAAC,CAAC,EACF,cAAc,EAAE,CACnB,EACD,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,KAAK,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,GAAG,EAAE;gBACL,IAAI,MAAM,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;oBACvC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAA;gBACnB,CAAC;YACL,CAAC,CAAC,EACF,cAAc,EAAE,CACnB,CACJ,CAAC,EACF,SAAS,CAAC,cAAc,CAAC,EACzB,QAAQ,CAAC,GAAG,EAAE;gBACV,WAAW,EAAE,CAAA;gBACb,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;YAClC,CAAC,CAAC,CACL,CAAA;QACL,CAAC,CAAC,CACL,CAAC,IAAI,CAAC,KAAK,CAAC;YACT,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC;SAC/D,CAAC,CAAC,CAAA;IACP,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,KAA4B;QACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,KAA4B;QAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAEO,SAAS,CAAC,IAAY,EAAE,KAA4B;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAEO,MAAM,CAAC,KAA4B;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,IAAI,CAAC,IAAI,CAAC;YACN,GAAG,EAAE;gBACD,OAAO,EAAE,KAAK,CAAC,SAAS;gBACxB,MAAM;aACT;SACe,CAAC,CAAA;IACzB,CAAC;IAEO,QAAQ,CAAC,GAAW,EAAE,KAAqD;QAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1B,IAAI;YACJ,QAAQ,EAAE,GAAG;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,KAAuD;QACnF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,OAAO,EAAE,QAAQ,KAAK,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAqB,CAAC,CAAA;IAC5D,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,KAAuD;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAQ,CAAC,CAAA;QACpD,CAAC;QAAC,MAAM,CAAC;YACL,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,OAAgB;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;QAEnF,IAAI,YAAY,EAAE,UAAU,KAAK,cAAc,EAAE,CAAC;YAC9C,OAAO,YAAY,CAAA;QACvB,CAAC;QAED,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,IAAI,MAAM,EAAE,UAAU,KAAK,cAAc,EAAE,CAAC;gBACxC,OAAO,MAAM,CAAA;YACjB,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAyB;QAC9C,MAAM,IAAI,CAAC,eAAe,CAAC;YACvB,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,SAAS;SAChB,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,sBAAsB;QACxB,MAAM,IAAI,CAAC,eAAe,CAAC;YACvB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACnC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAgB;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE/B,MAAM,IAAI,CAAC,eAAe,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM;SACT,CAAC,CAAA;IACN,CAAC;IAED,gBAAgB,CAAC,MAAiB;QAC9B,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAA;QACtC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,gBAAgB,CAAC,KAA4B;QACzC,IAAI,CAAC;YACD,OAAO;gBACH,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAA6B;aAC3C,CAAA;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwC,EAAE,KAAiB;QACxE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACjD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAiB;QACnC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;aAC1C,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aACpC,MAAM,CAAC,CAAC,MAAM,EAA2B,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,cAAc,CAAC,CAAA;QAEvF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAM;QACV,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,WAAW,CAAC,GAAiB;QACzB,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAA8B,CAAA;IACpF,CAAC;IAED,eAAe,CAAC,KAAyB;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACvB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACV,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACtF,CAAC;IAED,iBAAiB,CAAC,MAAqB;QACnC,IAAI,MAAM,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,KAAK,oBAAoB,EAAE,CAAC;YACpD,MAAM,CAAC,SAAS,EAAE,EAAE,CAAA;YACpB,MAAM,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,GAAW,EAAE,MAAiC;QAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACjD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAM;QACV,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChD,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAED,uBAAuB,CAAC,GAAW;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAM;QACV,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChD,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;CACJ"}
1
+ {"version":3,"file":"BaseWebsocketTransporter.js","sourceRoot":"","sources":["../../src/BaseWebsocketTransporter.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,14 @@ export class WebsocketRelayServer {
7
7
  #subscription = Subscription.EMPTY;
8
8
  #nodes = new Map();
9
9
  #listeners = new Map();
10
+ #services = new Map();
11
+ #serviceRrIndex = new Map();
12
+ #pendingRequests = new Map();
10
13
  constructor(options = {}) {
11
14
  this.#server = new WsServer({
12
15
  host: options.host,
13
16
  path: options.path,
14
- port: options.port || 8787,
17
+ port: options.port ?? 8787,
15
18
  });
16
19
  this.#subscription = fromEvent(this.#server, 'connection').pipe(mergeMap(([socket, request]) => this.on_connection(socket, request, options))).subscribe();
17
20
  }
@@ -43,36 +46,66 @@ export class WebsocketRelayServer {
43
46
  if (!frame)
44
47
  return;
45
48
  if (frame.type === 'hello') {
46
- const normalized = this.#normalizeHelloFrame(socket, frame);
47
- if (!normalized)
49
+ const nodeId = frame.me?.node_id;
50
+ if (!nodeId)
48
51
  return;
49
- const previous = this.#getSocketMetadata(this.#nodes.get(normalized.sender_id));
50
- this.#registerNode(socket, normalized);
51
- if (this.#shouldSyncDiscovery(previous, normalized.me)) {
52
+ const previous = this.#getSocketMetadata(this.#nodes.get(nodeId));
53
+ this.#registerNode(socket, frame, nodeId);
54
+ if (this.#shouldSyncDiscovery(previous, frame.me)) {
52
55
  this.#syncServerConnections();
53
56
  }
54
57
  return;
55
58
  }
56
- const senderId = this.#resolveSenderId(socket);
57
- if (!senderId)
58
- return;
59
- const normalized = { ...frame, sender_id: senderId };
60
- if (this.#hasTargetId(normalized) && normalized.target_id) {
61
- if (this.#requiresServerRole(normalized) && !isServerConnection) {
59
+ if (frame.type === 'rpc') {
60
+ const packet = frame.data;
61
+ if (packet.kind === 'response') {
62
+ if (packet.destination_node_id) {
63
+ const target = this.#nodes.get(packet.destination_node_id);
64
+ if (target?.readyState === WebSocket.OPEN) {
65
+ target.send(encodeRelayFrame(frame), { binary: true });
66
+ }
67
+ }
68
+ if (packet.completed || packet.error) {
69
+ this.#pendingRequests.delete(packet.request_id);
70
+ }
62
71
  return;
63
72
  }
64
- const target = this.#nodes.get(normalized.target_id);
65
- if (target?.readyState === WebSocket.OPEN) {
66
- target.send(encodeRelayFrame(normalized), { binary: true });
73
+ if (!isServerConnection)
74
+ return;
75
+ if (packet.kind === 'request') {
76
+ const targetNodeId = packet.destination_node_id ?? this.#pickServiceNode(packet.service);
77
+ if (!targetNodeId) {
78
+ this.#sendOfflineError(socket, packet.request_id, packet.service);
79
+ return;
80
+ }
81
+ const target = this.#nodes.get(targetNodeId);
82
+ if (target?.readyState === WebSocket.OPEN) {
83
+ this.#pendingRequests.set(packet.request_id, target);
84
+ target.send(encodeRelayFrame(frame), { binary: true });
85
+ }
86
+ return;
87
+ }
88
+ if (packet.kind === 'cancel') {
89
+ const providerSocket = this.#pendingRequests.get(packet.request_id);
90
+ if (!providerSocket)
91
+ return;
92
+ this.#pendingRequests.delete(packet.request_id);
93
+ if (providerSocket.readyState === WebSocket.OPEN) {
94
+ providerSocket.send(encodeRelayFrame(frame), { binary: true });
95
+ }
96
+ return;
67
97
  }
68
98
  return;
69
99
  }
70
- const handler = this[`on_${normalized.type}`];
100
+ const senderId = this.#resolveSenderId(socket);
101
+ if (!senderId)
102
+ return;
103
+ const handler = this[`on_${frame.type}`];
71
104
  if (!handler) {
72
- this.on_broadcast(normalized, socket);
105
+ this.on_broadcast(frame, socket);
73
106
  return;
74
107
  }
75
- handler.call(this, normalized, socket);
108
+ handler.call(this, frame, socket);
76
109
  }
77
110
  on_close(socket) {
78
111
  const nodeId = this.#resolveSenderId(socket);
@@ -80,27 +113,76 @@ export class WebsocketRelayServer {
80
113
  return;
81
114
  this.#nodes.delete(nodeId);
82
115
  this.#removeTopicListeners(nodeId);
116
+ this.#removeFromServiceIndex(nodeId);
117
+ for (const [requestId, providerSocket] of this.#pendingRequests) {
118
+ if (providerSocket === socket) {
119
+ this.#pendingRequests.delete(requestId);
120
+ }
121
+ }
83
122
  this.on_broadcast({
84
123
  type: 'offline',
85
- sender_id: nodeId,
86
124
  node_id: nodeId,
87
125
  }, socket);
88
126
  this.#syncServerConnections();
89
127
  }
90
- #registerNode(socket, discovery) {
91
- const nodeId = discovery.sender_id;
128
+ #registerNode(socket, frame, nodeId) {
92
129
  const previousNodeId = this.#resolveSenderId(socket);
93
130
  if (previousNodeId && previousNodeId !== nodeId) {
94
131
  this.#nodes.delete(previousNodeId);
95
132
  this.#removeTopicListeners(previousNodeId);
133
+ this.#removeFromServiceIndex(previousNodeId);
96
134
  this.on_broadcast({
97
135
  type: 'offline',
98
- sender_id: previousNodeId,
99
136
  node_id: previousNodeId,
100
137
  }, socket);
101
138
  }
102
139
  this.#nodes.set(nodeId, socket);
103
- this.#setSocketMetadata(socket, discovery.me);
140
+ this.#setSocketMetadata(socket, frame.me);
141
+ this.#updateServiceIndex(nodeId, frame.me);
142
+ }
143
+ #updateServiceIndex(nodeId, metadata) {
144
+ for (const nodes of this.#services.values()) {
145
+ nodes.delete(nodeId);
146
+ }
147
+ for (const service of Object.keys(metadata.services || {})) {
148
+ const nodes = this.#services.get(service) ?? new Set();
149
+ nodes.add(nodeId);
150
+ this.#services.set(service, nodes);
151
+ }
152
+ }
153
+ #removeFromServiceIndex(nodeId) {
154
+ for (const [service, nodes] of this.#services) {
155
+ nodes.delete(nodeId);
156
+ if (nodes.size === 0) {
157
+ this.#services.delete(service);
158
+ this.#serviceRrIndex.delete(service);
159
+ }
160
+ }
161
+ }
162
+ #pickServiceNode(service) {
163
+ const nodeIds = this.#services.get(service);
164
+ if (!nodeIds || nodeIds.size === 0)
165
+ return null;
166
+ const candidates = [...nodeIds].filter(id => this.#nodes.get(id)?.readyState === WebSocket.OPEN);
167
+ if (candidates.length === 0)
168
+ return null;
169
+ const current = this.#serviceRrIndex.get(service) ?? -1;
170
+ const next = (current + 1) % candidates.length;
171
+ this.#serviceRrIndex.set(service, next);
172
+ return candidates[next];
173
+ }
174
+ #sendOfflineError(socket, requestId, service) {
175
+ if (socket.readyState !== WebSocket.OPEN)
176
+ return;
177
+ socket.send(encodeRelayFrame({
178
+ type: 'rpc',
179
+ data: {
180
+ kind: 'response',
181
+ request_id: requestId,
182
+ error: { code: 'MICROSERVICE_OFFLINE', message: `No available node for service ${service}` },
183
+ completed: true,
184
+ },
185
+ }), { binary: true });
104
186
  }
105
187
  #isServerConnection(socket) {
106
188
  return socket[relaySocketState]?.isServerConnection === true;
@@ -118,24 +200,6 @@ export class WebsocketRelayServer {
118
200
  #getSocketMetadata(socket) {
119
201
  return socket ? socket[relaySocketState]?.metadata : undefined;
120
202
  }
121
- #requiresServerRole(frame) {
122
- return frame.type === 'request' || frame.type === 'cancel';
123
- }
124
- #hasTargetId(frame) {
125
- return 'target_id' in frame;
126
- }
127
- #normalizeHelloFrame(socket, frame) {
128
- const senderId = frame.me?.node_id;
129
- if (!senderId)
130
- return null;
131
- return {
132
- ...frame,
133
- sender_id: senderId,
134
- me: {
135
- ...frame.me,
136
- },
137
- };
138
- }
139
203
  #shouldSyncDiscovery(previous, next) {
140
204
  if (!previous)
141
205
  return true;
@@ -167,15 +231,16 @@ export class WebsocketRelayServer {
167
231
  #syncClientState(socket) {
168
232
  if (!this.#isServerConnection(socket))
169
233
  return;
170
- for (const [node_id, client] of this.#nodes) {
234
+ for (const [, client] of this.#nodes) {
171
235
  if (socket.readyState !== WebSocket.OPEN)
172
236
  return;
237
+ if (client === socket)
238
+ continue;
173
239
  const metadata = this.#getSocketMetadata(client);
174
240
  if (!metadata)
175
241
  continue;
176
242
  socket.send(encodeRelayFrame({
177
243
  type: 'hello',
178
- sender_id: node_id,
179
244
  me: metadata,
180
245
  }), { binary: true });
181
246
  }
@@ -189,20 +254,26 @@ export class WebsocketRelayServer {
189
254
  this.#syncClientState(client);
190
255
  }
191
256
  }
192
- on_subscribe(frame) {
193
- this.#removeTopicListeners(frame.sender_id);
257
+ on_subscribe(frame, sender) {
258
+ const senderId = this.#resolveSenderId(sender);
259
+ if (!senderId)
260
+ return;
261
+ this.#removeTopicListeners(senderId);
194
262
  for (const topic of new Set(frame.topics.filter(Boolean))) {
195
263
  const listeners = this.#listeners.get(topic) || new Set();
196
- listeners.add(frame.sender_id);
264
+ listeners.add(senderId);
197
265
  this.#listeners.set(topic, listeners);
198
266
  }
199
267
  }
200
- on_unsubscribe(frame) {
268
+ on_unsubscribe(frame, sender) {
269
+ const senderId = this.#resolveSenderId(sender);
270
+ if (!senderId)
271
+ return;
201
272
  for (const topic of new Set(frame.topics.filter(Boolean))) {
202
273
  const listeners = this.#listeners.get(topic);
203
274
  if (!listeners)
204
275
  continue;
205
- listeners.delete(frame.sender_id);
276
+ listeners.delete(senderId);
206
277
  if (listeners.size === 0) {
207
278
  this.#listeners.delete(topic);
208
279
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketRelayServer.js","sourceRoot":"","sources":["../../src/WebsocketRelayServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebsocketRelayServer.js","sourceRoot":"","sources":["../../src/WebsocketRelayServer.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
- import type { RpcPacket, SpiderMeshNode } from '@spider-mesh/core';
1
+ import type { RpcCancelPacket, RpcRequestPacket, RpcResponsePacket, SpiderMeshNode } from '@spider-mesh/core';
2
2
  export type RelayRawData = Uint8Array | ArrayBuffer | ArrayBufferView | string | RelayRawData[];
3
3
  export type RelayRpcFrame = {
4
- type: RpcPacket['kind'];
5
- payload: Uint8Array;
6
- target_id?: string;
4
+ type: 'rpc';
5
+ data: RpcRequestPacket | RpcResponsePacket | RpcCancelPacket;
7
6
  };
8
7
  export type RelayPublishFrame = {
9
8
  type: 'publish';
@@ -28,25 +27,6 @@ export type RelayOfflineFrame = {
28
27
  node_id: string;
29
28
  };
30
29
  export type RelayFrame = RelayRpcFrame | RelayPublishFrame | RelaySubscribeFrame | RelayUnsubscribeFrame | RelayHelloFrame | RelayOfflineFrame;
31
- export type ReceivedRelayRpcFrame = RelayRpcFrame & {
32
- sender_id: string;
33
- };
34
- export type ReceivedRelayPublishFrame = RelayPublishFrame & {
35
- sender_id: string;
36
- };
37
- export type ReceivedRelaySubscribeFrame = RelaySubscribeFrame & {
38
- sender_id: string;
39
- };
40
- export type ReceivedRelayUnsubscribeFrame = RelayUnsubscribeFrame & {
41
- sender_id: string;
42
- };
43
- export type ReceivedRelayHelloFrame = RelayHelloFrame & {
44
- sender_id: string;
45
- };
46
- export type ReceivedRelayOfflineFrame = RelayOfflineFrame & {
47
- sender_id: string;
48
- };
49
- export type ReceivedRelayFrame = ReceivedRelayRpcFrame | ReceivedRelayPublishFrame | ReceivedRelaySubscribeFrame | ReceivedRelayUnsubscribeFrame | ReceivedRelayHelloFrame | ReceivedRelayOfflineFrame;
50
- export declare function encodeRelayFrame(frame: RelayFrame | ReceivedRelayFrame): Uint8Array<ArrayBuffer>;
51
- export declare function decodeRelayFrame(raw: Uint8Array): RelayRpcFrame | RelayPublishFrame | RelaySubscribeFrame | RelayUnsubscribeFrame | RelayHelloFrame | RelayOfflineFrame | null;
30
+ export declare function encodeRelayFrame(frame: RelayFrame): Uint8Array<ArrayBuffer>;
31
+ export declare function decodeRelayFrame(raw: Uint8Array): RelayFrame | null;
52
32
  export declare function normalizeRelayRawData(raw: RelayRawData): Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"websocketProtocol.js","sourceRoot":"","sources":["../../src/websocketProtocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAiDjD,MAAM,UAAU,gBAAgB,CAAC,KAAsC;IACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC5C,IAAI,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAoC,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAiB;IACnD,IAAI,GAAG,YAAY,UAAU;QAAE,OAAO,GAAG,CAAA;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChG,IAAI,GAAG,YAAY,WAAW;QAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACjE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAoB;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,GAAsC;IACxD,IAAI,GAAG,YAAY,UAAU;QAAE,OAAO,GAAG,CAAA;IACzC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;IAC9F,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"websocketProtocol.js","sourceRoot":"","sources":["../../src/websocketProtocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAwCjD,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC5C,IAAI,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAe,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAiB;IACnD,IAAI,GAAG,YAAY,UAAU;QAAE,OAAO,GAAG,CAAA;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChG,IAAI,GAAG,YAAY,WAAW;QAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACjE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAoB;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,GAAsC;IACxD,IAAI,GAAG,YAAY,UAAU;QAAE,OAAO,GAAG,CAAA;IACzC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;IAC9F,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"root":["../examples/websocket-client.ts","../examples/websocket-e2e-client.ts","../examples/websocket-e2e-matrix-client.ts","../examples/websocket-e2e-matrix-provider.ts","../examples/websocket-e2e-matrix-test.ts","../examples/websocket-e2e-provider.ts","../examples/websocket-e2e-reverse-client.ts","../examples/websocket-e2e-reverse-server.ts","../examples/websocket-e2e-reverse-test.ts","../examples/websocket-e2e-round-robin-client.ts","../examples/websocket-e2e-round-robin-test.ts","../examples/websocket-e2e-test.ts","../examples/websocket-provider.ts","../examples/websocket-server.ts","../examples/websocket-smoke-test.ts","../examples/helpers/createmesh.ts","../src/basewebsockettransporter.ts","../src/globalwebsockettransporter.ts","../src/websocketrelayserver.ts","../src/websockettransporter.ts","../src/browser.ts","../src/node.ts","../src/react-native.ts","../src/relay-server.ts","../src/websocketprotocol.ts"],"version":"6.0.3"}
1
+ {"root":["../src/basewebsockettransporter.ts","../src/globalwebsockettransporter.ts","../src/websocketrelayserver.ts","../src/websockettransporter.ts","../src/browser.ts","../src/node.ts","../src/react-native.ts","../src/relay-server.ts","../src/websocketprotocol.ts"],"version":"6.0.3"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spider-mesh/ws",
3
3
  "type": "module",
4
- "version": "2.0.42",
4
+ "version": "2.0.45",
5
5
  "description": "Built-in WebSocket transporter and relay server for Spider Mesh",
6
6
  "repository": {
7
7
  "url": "https://github.com/spider-mesh/ws"
@@ -12,10 +12,10 @@
12
12
  "yarn.lock"
13
13
  ],
14
14
  "peerDependencies": {
15
- "@spider-mesh/core": "^2.0.42"
15
+ "@spider-mesh/core": "^2.0.45"
16
16
  },
17
17
  "devDependencies": {
18
- "@spider-mesh/core": "^2.0.42",
18
+ "@spider-mesh/core": "^2.0.45",
19
19
  "@types/bun": "^1.3.13",
20
20
  "@types/node": "^25.6.0",
21
21
  "@types/ws": "^8.18.1",
package/tsconfig.json CHANGED
@@ -32,6 +32,7 @@
32
32
  "out",
33
33
  "src/schema.ts",
34
34
  "bin",
35
+ "examples",
35
36
  "tests",
36
37
  "./build/**/*"
37
38
  ]