@spider-mesh/ws 2.0.41 → 2.0.44
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.
- package/README.md +96 -169
- package/build/src/BaseWebsocketTransporter.d.ts +5 -3
- package/build/src/BaseWebsocketTransporter.js +26 -13
- package/build/src/BaseWebsocketTransporter.js.map +1 -1
- package/build/src/websocketProtocol.d.ts +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/tsconfig.json +1 -0
- package/build/examples/websocket-client.d.ts +0 -1
- package/build/examples/websocket-client.js +0 -18
- package/build/examples/websocket-client.js.map +0 -1
- package/build/examples/websocket-e2e-client.d.ts +0 -1
- package/build/examples/websocket-e2e-client.js +0 -38
- package/build/examples/websocket-e2e-client.js.map +0 -1
- package/build/examples/websocket-e2e-matrix-client.d.ts +0 -1
- package/build/examples/websocket-e2e-matrix-client.js +0 -68
- package/build/examples/websocket-e2e-matrix-client.js.map +0 -1
- package/build/examples/websocket-e2e-matrix-provider.d.ts +0 -1
- package/build/examples/websocket-e2e-matrix-provider.js +0 -42
- package/build/examples/websocket-e2e-matrix-provider.js.map +0 -1
- package/build/examples/websocket-e2e-matrix-test.d.ts +0 -1
- package/build/examples/websocket-e2e-matrix-test.js +0 -85
- package/build/examples/websocket-e2e-matrix-test.js.map +0 -1
- package/build/examples/websocket-e2e-provider.d.ts +0 -1
- package/build/examples/websocket-e2e-provider.js +0 -23
- package/build/examples/websocket-e2e-provider.js.map +0 -1
- package/build/examples/websocket-e2e-reverse-client.d.ts +0 -1
- package/build/examples/websocket-e2e-reverse-client.js +0 -23
- package/build/examples/websocket-e2e-reverse-client.js.map +0 -1
- package/build/examples/websocket-e2e-reverse-server.d.ts +0 -1
- package/build/examples/websocket-e2e-reverse-server.js +0 -38
- package/build/examples/websocket-e2e-reverse-server.js.map +0 -1
- package/build/examples/websocket-e2e-reverse-test.d.ts +0 -1
- package/build/examples/websocket-e2e-reverse-test.js +0 -85
- package/build/examples/websocket-e2e-reverse-test.js.map +0 -1
- package/build/examples/websocket-e2e-round-robin-client.d.ts +0 -1
- package/build/examples/websocket-e2e-round-robin-client.js +0 -42
- package/build/examples/websocket-e2e-round-robin-client.js.map +0 -1
- package/build/examples/websocket-e2e-round-robin-test.d.ts +0 -1
- package/build/examples/websocket-e2e-round-robin-test.js +0 -93
- package/build/examples/websocket-e2e-round-robin-test.js.map +0 -1
- package/build/examples/websocket-e2e-test.d.ts +0 -1
- package/build/examples/websocket-e2e-test.js +0 -85
- package/build/examples/websocket-e2e-test.js.map +0 -1
- package/build/examples/websocket-provider.d.ts +0 -1
- package/build/examples/websocket-provider.js +0 -21
- package/build/examples/websocket-provider.js.map +0 -1
- package/build/examples/websocket-server.d.ts +0 -1
- package/build/examples/websocket-server.js +0 -6
- package/build/examples/websocket-server.js.map +0 -1
- package/build/examples/websocket-smoke-test.d.ts +0 -1
- package/build/examples/websocket-smoke-test.js +0 -166
- package/build/examples/websocket-smoke-test.js.map +0 -1
- package/build/tests/helpers/runBunScript.d.ts +0 -6
- package/build/tests/helpers/runBunScript.js +0 -46
- package/build/tests/helpers/runBunScript.js.map +0 -1
- package/build/tests/websocket-spidermesh-matrix.e2e.test.d.ts +0 -1
- package/build/tests/websocket-spidermesh-matrix.e2e.test.js +0 -13
- package/build/tests/websocket-spidermesh-matrix.e2e.test.js.map +0 -1
- package/build/tests/websocket-spidermesh-reverse.e2e.test.d.ts +0 -1
- package/build/tests/websocket-spidermesh-reverse.e2e.test.js +0 -9
- package/build/tests/websocket-spidermesh-reverse.e2e.test.js.map +0 -1
- package/build/tests/websocket-spidermesh-round-robin.e2e.test.d.ts +0 -1
- package/build/tests/websocket-spidermesh-round-robin.e2e.test.js +0 -20
- package/build/tests/websocket-spidermesh-round-robin.e2e.test.js.map +0 -1
- package/build/tests/websocket-spidermesh.e2e.test.d.ts +0 -1
- package/build/tests/websocket-spidermesh.e2e.test.js +0 -9
- package/build/tests/websocket-spidermesh.e2e.test.js.map +0 -1
- package/build/tests/websocket-transporter.e2e.test.d.ts +0 -1
- package/build/tests/websocket-transporter.e2e.test.js +0 -9
- package/build/tests/websocket-transporter.e2e.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,42 +1,13 @@
|
|
|
1
1
|
# Spider Mesh WS
|
|
2
2
|
|
|
3
|
-
`@spider-mesh/ws`
|
|
3
|
+
`@spider-mesh/ws` provides the WebSocket transport package for `@spider-mesh/core`.
|
|
4
4
|
|
|
5
|
-
It contains
|
|
5
|
+
It contains:
|
|
6
6
|
|
|
7
|
-
- `WebsocketTransporter
|
|
8
|
-
- `WebsocketRelayServer
|
|
7
|
+
- `WebsocketTransporter` for application nodes
|
|
8
|
+
- `WebsocketRelayServer` for the relay process
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
The core package stays runtime-agnostic, while `@spider-mesh/ws` contains the Node.js/Bun-specific WebSocket implementation based on `ws` and MsgPack.
|
|
13
|
-
|
|
14
|
-
## What This Package Does
|
|
15
|
-
|
|
16
|
-
Use `@spider-mesh/ws` when you want the built-in WebSocket transport instead of writing a custom transporter.
|
|
17
|
-
|
|
18
|
-
The package provides:
|
|
19
|
-
|
|
20
|
-
- binary WebSocket frames encoded with `@msgpack/msgpack`
|
|
21
|
-
- RPC request, response, and cancel forwarding
|
|
22
|
-
- node discovery propagation through relay hello and offline events
|
|
23
|
-
- pubsub publish, subscribe, and unsubscribe forwarding
|
|
24
|
-
- reconnect and heartbeat handling in the client transporter
|
|
25
|
-
- a dedicated relay server entry at `@spider-mesh/ws/relay-server`
|
|
26
|
-
|
|
27
|
-
## When To Use It
|
|
28
|
-
|
|
29
|
-
Use this package when:
|
|
30
|
-
|
|
31
|
-
- your runtime is Node.js or Bun
|
|
32
|
-
- you want an official ready-to-use Spider Mesh transport
|
|
33
|
-
- you want one relay process that many providers and clients can connect to
|
|
34
|
-
|
|
35
|
-
Do not use this package as the default import source for runtime-agnostic APIs.
|
|
36
|
-
|
|
37
|
-
- Import `SpiderMesh`, `Microservice`, and `RemoteServiceLinker` from `@spider-mesh/core`
|
|
38
|
-
- Import `WebsocketTransporter` from `@spider-mesh/ws`
|
|
39
|
-
- Import `WebsocketRelayServer` from `@spider-mesh/ws/relay-server`
|
|
10
|
+
The package is ESM-only.
|
|
40
11
|
|
|
41
12
|
## Install
|
|
42
13
|
|
|
@@ -44,220 +15,176 @@ Do not use this package as the default import source for runtime-agnostic APIs.
|
|
|
44
15
|
bun add @spider-mesh/core @spider-mesh/ws rxjs reflect-metadata
|
|
45
16
|
```
|
|
46
17
|
|
|
47
|
-
Keep `@spider-mesh/ws` and `@spider-mesh/core` on matching
|
|
48
|
-
|
|
49
|
-
`SpiderMeshNode` metadata consumed by this package no longer includes `ips` or `online`.
|
|
50
|
-
Relay hello frames now mirror the core node metadata directly and discovery broadcast uses a single argument:
|
|
51
|
-
|
|
52
|
-
```ts
|
|
53
|
-
broadcast(data: MdnsMessage<NodeMetadata>): Promise<void>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
This package is ESM-only.
|
|
18
|
+
Keep `@spider-mesh/ws` and `@spider-mesh/core` on matching versions.
|
|
57
19
|
|
|
58
20
|
## Export Surface
|
|
59
21
|
|
|
60
|
-
|
|
22
|
+
Node/Bun transporter:
|
|
61
23
|
|
|
62
24
|
```ts
|
|
63
25
|
import { WebsocketTransporter } from '@spider-mesh/ws/node'
|
|
64
26
|
```
|
|
65
27
|
|
|
66
|
-
|
|
28
|
+
Browser transporter:
|
|
67
29
|
|
|
68
30
|
```ts
|
|
69
|
-
import {
|
|
31
|
+
import { WebsocketTransporter } from '@spider-mesh/ws/browser'
|
|
70
32
|
```
|
|
71
33
|
|
|
72
|
-
|
|
34
|
+
React Native transporter:
|
|
73
35
|
|
|
74
36
|
```ts
|
|
75
|
-
import {
|
|
76
|
-
import { WebsocketTransporter } from '@spider-mesh/ws/node'
|
|
77
|
-
import { WebsocketRelayServer } from '@spider-mesh/ws/relay-server'
|
|
37
|
+
import { WebsocketTransporter } from '@spider-mesh/ws/react-native'
|
|
78
38
|
```
|
|
79
39
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
| Runtime | Transporter Entry | Relay Server Entry |
|
|
83
|
-
| --- | --- | --- |
|
|
84
|
-
| Node.js | `@spider-mesh/ws/node` | `@spider-mesh/ws/relay-server` |
|
|
85
|
-
| Bun | `@spider-mesh/ws/node` | `@spider-mesh/ws/relay-server` |
|
|
86
|
-
| Browser | Supported via `@spider-mesh/ws/browser` | Not supported |
|
|
87
|
-
| React Native | Supported via `@spider-mesh/ws/react-native` | Not supported |
|
|
88
|
-
|
|
89
|
-
The package root `@spider-mesh/ws` is not exported. Import a runtime-specific subpath explicitly.
|
|
40
|
+
Relay server:
|
|
90
41
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
42
|
+
```ts
|
|
43
|
+
import { WebsocketRelayServer } from '@spider-mesh/ws/relay-server'
|
|
44
|
+
```
|
|
94
45
|
|
|
95
|
-
|
|
46
|
+
## Runtime Setup
|
|
96
47
|
|
|
97
|
-
|
|
48
|
+
Create one `WebsocketTransporter`, connect it to the relay, then register that shared transporter directly on `SpiderMesh`.
|
|
98
49
|
|
|
99
50
|
```ts
|
|
51
|
+
import { Registry, SpiderMesh } from '@spider-mesh/core'
|
|
100
52
|
import { WebsocketTransporter } from '@spider-mesh/ws/node'
|
|
101
|
-
import { WebsocketTransporter as BrowserWebsocketTransporter } from '@spider-mesh/ws/browser'
|
|
102
|
-
import { WebsocketTransporter as ReactNativeWebsocketTransporter } from '@spider-mesh/ws/react-native'
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
## Architecture
|
|
106
53
|
|
|
107
|
-
|
|
54
|
+
const transporter = new WebsocketTransporter({
|
|
55
|
+
heartbeatIntervalMs: 5000,
|
|
56
|
+
reconnectIntervalMs: 1000,
|
|
57
|
+
})
|
|
108
58
|
|
|
109
|
-
1
|
|
110
|
-
2. Start provider nodes with `WebsocketTransporter` and local `@Microservice()` classes.
|
|
111
|
-
3. Start client nodes with `WebsocketTransporter` and `RemoteServiceLinker.link()`.
|
|
112
|
-
4. In clients, wait for discovery before the first RPC call.
|
|
59
|
+
transporter.connect('ws://127.0.0.1:8787')
|
|
113
60
|
|
|
114
|
-
|
|
61
|
+
const registry = new Registry()
|
|
62
|
+
const mesh = new SpiderMesh(registry)
|
|
115
63
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- the relay server forwards frames, but does not host application services
|
|
64
|
+
mesh.registerTransporter(transporter)
|
|
65
|
+
```
|
|
119
66
|
|
|
120
|
-
|
|
67
|
+
`SpiderMesh.registerTransporter()` now links all supported capabilities on the same transporter instance, so one `WebsocketTransporter` can serve RPC, discovery, and pubsub together.
|
|
121
68
|
|
|
122
|
-
|
|
69
|
+
## Relay Server
|
|
123
70
|
|
|
124
71
|
```ts
|
|
125
72
|
import { WebsocketRelayServer } from '@spider-mesh/ws/relay-server'
|
|
126
73
|
|
|
127
74
|
const server = new WebsocketRelayServer({
|
|
128
|
-
|
|
129
|
-
|
|
75
|
+
host: '127.0.0.1',
|
|
76
|
+
port: 8787,
|
|
130
77
|
})
|
|
131
78
|
|
|
132
79
|
console.log(`WebSocket relay listening on ws://127.0.0.1:${server.port}`)
|
|
133
80
|
```
|
|
134
81
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
```ts
|
|
138
|
-
import { Microservice, SpiderMesh } from '@spider-mesh/core'
|
|
139
|
-
import { WebsocketTransporter } from '@spider-mesh/ws/node'
|
|
82
|
+
The relay forwards discovery, RPC, and pubsub frames. It does not host application services.
|
|
140
83
|
|
|
141
|
-
|
|
142
|
-
heartbeatIntervalMs: 5000,
|
|
143
|
-
reconnectIntervalMs: 1000,
|
|
144
|
-
})
|
|
84
|
+
## Provider Example
|
|
145
85
|
|
|
146
|
-
|
|
86
|
+
```ts
|
|
87
|
+
import { Microservice } from '@spider-mesh/core'
|
|
147
88
|
|
|
148
89
|
@Microservice()
|
|
149
90
|
class GreetingService {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
91
|
+
async hello(name: string) {
|
|
92
|
+
return `hello ${name}`
|
|
93
|
+
}
|
|
153
94
|
}
|
|
154
95
|
|
|
155
96
|
new GreetingService()
|
|
156
|
-
new SpiderMesh({ transporters: [transporter] })
|
|
157
97
|
```
|
|
158
98
|
|
|
159
|
-
|
|
99
|
+
## Client Example
|
|
160
100
|
|
|
161
101
|
```ts
|
|
162
|
-
import { RemoteServiceLinker
|
|
163
|
-
import { WebsocketTransporter } from '@spider-mesh/ws/node'
|
|
164
|
-
|
|
165
|
-
const transporter = new WebsocketTransporter({
|
|
166
|
-
heartbeatIntervalMs: 5000,
|
|
167
|
-
reconnectIntervalMs: 1000,
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
transporter.connect('ws://127.0.0.1:8787')
|
|
102
|
+
import { RemoteServiceLinker } from '@spider-mesh/core'
|
|
171
103
|
|
|
172
104
|
type GreetingService = {
|
|
173
|
-
|
|
105
|
+
hello(name: string): Promise<string>
|
|
174
106
|
}
|
|
175
107
|
|
|
176
|
-
const mesh = new SpiderMesh({ transporters: [transporter] })
|
|
177
108
|
const greeter = RemoteServiceLinker.link<GreetingService>(mesh, {
|
|
178
|
-
|
|
179
|
-
|
|
109
|
+
service: 'GreetingService',
|
|
110
|
+
timeout: 5000,
|
|
180
111
|
})
|
|
181
112
|
|
|
182
113
|
await greeter.wait()
|
|
183
114
|
console.log(await greeter.hello('world'))
|
|
184
115
|
```
|
|
185
116
|
|
|
186
|
-
##
|
|
117
|
+
## WebsocketTransporter
|
|
187
118
|
|
|
188
|
-
`WebsocketTransporter`
|
|
119
|
+
`WebsocketTransporter` owns one shared WebSocket connection layer.
|
|
189
120
|
|
|
190
|
-
|
|
191
|
-
- `reconnectIntervalMs`: delay before reconnect attempts after disconnect
|
|
192
|
-
- `unsubscribeDelayMs`: delay before unsubscribe is sent after the last local subscriber leaves a topic
|
|
121
|
+
Current responsibilities:
|
|
193
122
|
|
|
194
|
-
|
|
123
|
+
- maintain relay connections with automatic reconnect
|
|
124
|
+
- expose `status$` for per-URL connection status
|
|
125
|
+
- send and receive RPC frames, routing by `destination_node_id` embedded in the packet; falls back to `registry.pickRpcNode(service)` for round-robin when absent
|
|
126
|
+
- propagate discovery `hello` and `offline` frames
|
|
127
|
+
- forward pubsub messages and subscription changes
|
|
128
|
+
- integrate directly with `mesh.registerTransporter(transporter)`
|
|
195
129
|
|
|
196
|
-
|
|
130
|
+
Current send contract:
|
|
197
131
|
|
|
198
132
|
```ts
|
|
199
|
-
|
|
133
|
+
send(packet: RpcRequestPacket | RpcCancelPacket | RpcResponsePacket): Promise<{ cancel: () => void }>
|
|
134
|
+
```
|
|
200
135
|
|
|
201
|
-
|
|
202
|
-
heartbeatIntervalMs: 5000,
|
|
203
|
-
reconnectIntervalMs: 1000,
|
|
204
|
-
unsubscribeDelayMs: 10000,
|
|
205
|
-
})
|
|
136
|
+
For `request` packets, the returned `cancel()` sends a `RpcCancelPacket` through the relay to the same destination node. The provider stops the running Observable on receipt. `SpiderMesh` calls `cancel()` automatically when a subscriber unsubscribes before the stream completes.
|
|
206
137
|
|
|
207
|
-
|
|
208
|
-
console.log(statuses.get('ws://127.0.0.1:8787'))
|
|
209
|
-
})
|
|
210
|
-
```
|
|
138
|
+
Throws `MICROSERVICE_OFFLINE` immediately when a registry is linked but no node is available for the requested service.
|
|
211
139
|
|
|
212
|
-
|
|
140
|
+
Supported options:
|
|
213
141
|
|
|
214
|
-
-
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
- Pubsub subscriptions are tracked by topic on the relay.
|
|
218
|
-
- Relay startup should happen before providers and clients.
|
|
219
|
-
- `WebsocketRelayServer` is a relay, not an application runtime.
|
|
142
|
+
- `heartbeatIntervalMs`
|
|
143
|
+
- `reconnectIntervalMs`
|
|
144
|
+
- `unsubscribeDelayMs`
|
|
220
145
|
|
|
221
|
-
|
|
146
|
+
`status$` is a `BehaviorSubject<Map<string, string>>` with values such as `connecting`, `connected`, `error`, and `not_connected`.
|
|
222
147
|
|
|
223
|
-
|
|
148
|
+
## Runtime Support
|
|
149
|
+
|
|
150
|
+
| Runtime | Transporter Entry | Relay Server |
|
|
151
|
+
| --- | --- | --- |
|
|
152
|
+
| Node.js | `@spider-mesh/ws/node` | supported |
|
|
153
|
+
| Bun | `@spider-mesh/ws/node` | supported |
|
|
154
|
+
| Browser | `@spider-mesh/ws/browser` | not supported |
|
|
155
|
+
| React Native | `@spider-mesh/ws/react-native` | not supported |
|
|
156
|
+
|
|
157
|
+
## Tests
|
|
158
|
+
|
|
159
|
+
The package includes:
|
|
160
|
+
|
|
161
|
+
- binary transporter smoke coverage
|
|
162
|
+
- WebSocket connection status coverage
|
|
163
|
+
- SpiderMesh RPC e2e coverage
|
|
164
|
+
- reverse RPC 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)
|
|
173
|
+
|
|
174
|
+
Run the full suite with:
|
|
224
175
|
|
|
225
176
|
```bash
|
|
226
|
-
bun
|
|
227
|
-
bun run test:websocket
|
|
228
|
-
bun run test:websocket:e2e
|
|
229
|
-
bun run test:websocket:e2e:matrix
|
|
230
|
-
bun run test:websocket:e2e:reverse
|
|
231
|
-
bun run test:e2e
|
|
177
|
+
bun test
|
|
232
178
|
```
|
|
233
179
|
|
|
234
|
-
|
|
180
|
+
Build with:
|
|
235
181
|
|
|
236
182
|
```bash
|
|
237
|
-
bun run
|
|
238
|
-
bun run example:websocket:provider
|
|
239
|
-
bun run example:websocket:client
|
|
183
|
+
bun run build
|
|
240
184
|
```
|
|
241
185
|
|
|
242
|
-
##
|
|
243
|
-
|
|
244
|
-
Canonical examples in this package:
|
|
245
|
-
|
|
246
|
-
- `examples/websocket-server.ts`
|
|
247
|
-
- `examples/websocket-provider.ts`
|
|
248
|
-
- `examples/websocket-client.ts`
|
|
249
|
-
- `examples/websocket-e2e-test.ts`
|
|
250
|
-
- `examples/websocket-e2e-matrix-test.ts`
|
|
251
|
-
- `examples/websocket-e2e-round-robin-test.ts`
|
|
252
|
-
|
|
253
|
-
Use these as the preferred implementation references when writing app code or generating code with AI tools.
|
|
254
|
-
|
|
255
|
-
## Relationship With Core
|
|
256
|
-
|
|
257
|
-
Keep these responsibilities separate:
|
|
258
|
-
|
|
259
|
-
- `@spider-mesh/core`: service runtime, decorators, remote linking, shared contracts
|
|
260
|
-
- `@spider-mesh/ws`: built-in WebSocket transporter
|
|
261
|
-
- `@spider-mesh/ws/relay-server`: dedicated relay process
|
|
186
|
+
## Notes
|
|
262
187
|
|
|
263
|
-
|
|
188
|
+
- The package root is not exported; use runtime-specific subpaths.
|
|
189
|
+
- RPC and relay frames are encoded with `@msgpack/msgpack`.
|
|
190
|
+
- Start the relay before providers and clients.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
2
|
-
import type { DiscoveryTransporter, MdnsMessage, NodeMetadata, PubsubTransporter,
|
|
2
|
+
import type { DiscoveryTransporter, MdnsMessage, NodeMetadata, PubsubTransporter, RpcCancelPacket, RpcRequestPacket, RpcResponsePacket, RpcTransporter, Registry } from '@spider-mesh/core';
|
|
3
3
|
export type WebsocketTransporterOptions = {
|
|
4
4
|
heartbeatIntervalMs?: number;
|
|
5
5
|
reconnectIntervalMs?: number;
|
|
@@ -21,10 +21,12 @@ export declare abstract class BaseWebsocketTransporter extends Subject<any> impl
|
|
|
21
21
|
protected options: WebsocketTransporterOptions;
|
|
22
22
|
readonly status$: BehaviorSubject<Map<string, string>>;
|
|
23
23
|
constructor(options?: WebsocketTransporterOptions);
|
|
24
|
-
|
|
24
|
+
linkRegistry(registry: Registry): void;
|
|
25
25
|
connect(url: string): void;
|
|
26
26
|
close(url: string): void;
|
|
27
|
-
send(packet:
|
|
27
|
+
send(packet: RpcRequestPacket | RpcCancelPacket | RpcResponsePacket): Promise<{
|
|
28
|
+
cancel: () => void;
|
|
29
|
+
}>;
|
|
28
30
|
broadcast(data: MdnsMessage<NodeMetadata>): Promise<void>;
|
|
29
31
|
publish<T>(topic: string, data: T): Promise<void>;
|
|
30
32
|
listen<T>(topic: string): Observable<T>;
|
|
@@ -9,13 +9,14 @@ export class BaseWebsocketTransporter extends Subject {
|
|
|
9
9
|
#topics = new Map();
|
|
10
10
|
#nodes = new Map();
|
|
11
11
|
#me$ = new ReplaySubject(1);
|
|
12
|
+
#registry;
|
|
12
13
|
status$ = new BehaviorSubject(new Map());
|
|
13
14
|
constructor(options = {}) {
|
|
14
15
|
super();
|
|
15
16
|
this.options = options;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
linkRegistry(registry) {
|
|
19
|
+
this.#registry = registry;
|
|
19
20
|
}
|
|
20
21
|
connect(url) {
|
|
21
22
|
if (this.#connections.has(url))
|
|
@@ -35,13 +36,30 @@ export class BaseWebsocketTransporter extends Subject {
|
|
|
35
36
|
this.#disconnectSocket(socket);
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
async send(packet
|
|
39
|
-
const
|
|
39
|
+
async send(packet) {
|
|
40
|
+
const resolvedNodeId = packet.destination_node_id
|
|
41
|
+
?? (packet.kind === 'request' ? (this.#registry?.pickRpcNode(packet.service) ?? undefined) : undefined);
|
|
42
|
+
if (packet.kind === 'request' && !resolvedNodeId && this.#registry) {
|
|
43
|
+
throw { code: 'MICROSERVICE_OFFLINE', message: `No available node for service ${packet.service}` };
|
|
44
|
+
}
|
|
45
|
+
const socket = this.#selectRpcSocket(resolvedNodeId);
|
|
40
46
|
await this.#sendFrame(socket, {
|
|
41
47
|
type: packet.kind,
|
|
42
|
-
target_id:
|
|
48
|
+
target_id: resolvedNodeId,
|
|
43
49
|
payload: this.#encodeRpcPacket(packet),
|
|
44
50
|
});
|
|
51
|
+
if (packet.kind === 'request') {
|
|
52
|
+
return {
|
|
53
|
+
cancel: () => {
|
|
54
|
+
void this.send({
|
|
55
|
+
kind: 'cancel',
|
|
56
|
+
request_id: packet.request_id,
|
|
57
|
+
destination_node_id: resolvedNodeId,
|
|
58
|
+
}).catch(() => undefined);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return { cancel: () => { } };
|
|
45
63
|
}
|
|
46
64
|
async broadcast(data) {
|
|
47
65
|
const localNode = {
|
|
@@ -138,12 +156,7 @@ export class BaseWebsocketTransporter extends Subject {
|
|
|
138
156
|
const packet = this.#decodeRpcPacket(frame);
|
|
139
157
|
if (!packet)
|
|
140
158
|
return;
|
|
141
|
-
this.next({
|
|
142
|
-
rpc: {
|
|
143
|
-
node_id: frame.sender_id,
|
|
144
|
-
packet
|
|
145
|
-
}
|
|
146
|
-
});
|
|
159
|
+
this.next({ rpc: packet });
|
|
147
160
|
}
|
|
148
161
|
on_hello(url, frame) {
|
|
149
162
|
const node = frame.me;
|
|
@@ -171,8 +184,8 @@ export class BaseWebsocketTransporter extends Subject {
|
|
|
171
184
|
topic.subject.next(frame.payload);
|
|
172
185
|
}
|
|
173
186
|
}
|
|
174
|
-
#selectRpcSocket(
|
|
175
|
-
const relayUrl = this.#nodes.get(
|
|
187
|
+
#selectRpcSocket(node_id) {
|
|
188
|
+
const relayUrl = node_id ? this.#nodes.get(node_id)?.relayUrl : undefined;
|
|
176
189
|
const routedSocket = relayUrl ? this.#connections.get(relayUrl)?.socket : undefined;
|
|
177
190
|
if (routedSocket?.readyState === WEBSOCKET_OPEN) {
|
|
178
191
|
return routedSocket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseWebsocketTransporter.js","sourceRoot":"","sources":["../../src/BaseWebsocketTransporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseWebsocketTransporter.js","sourceRoot":"","sources":["../../src/BaseWebsocketTransporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SpiderMeshNode } from '@spider-mesh/core';
|
|
2
2
|
export type RelayRawData = Uint8Array | ArrayBuffer | ArrayBufferView | string | RelayRawData[];
|
|
3
3
|
export type RelayRpcFrame = {
|
|
4
|
-
type:
|
|
4
|
+
type: 'request' | 'response' | 'cancel';
|
|
5
5
|
payload: Uint8Array;
|
|
6
6
|
target_id?: string;
|
|
7
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../
|
|
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.
|
|
4
|
+
"version": "2.0.44",
|
|
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.
|
|
15
|
+
"@spider-mesh/core": "^2.0.44"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@spider-mesh/core": "^2.0.
|
|
18
|
+
"@spider-mesh/core": "^2.0.44",
|
|
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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { RemoteServiceLinker, SpiderMesh } from '@spider-mesh/core';
|
|
2
|
-
import { WebsocketTransporter } from '../src/node.js';
|
|
3
|
-
const wsUrl = process.env.WS_URL || 'ws://127.0.0.1:8787';
|
|
4
|
-
const transporter = new WebsocketTransporter({
|
|
5
|
-
heartbeatIntervalMs: 5000,
|
|
6
|
-
reconnectIntervalMs: 1000,
|
|
7
|
-
});
|
|
8
|
-
transporter.connect(wsUrl);
|
|
9
|
-
const mesh = new SpiderMesh({ transporters: [transporter] });
|
|
10
|
-
const greeter = RemoteServiceLinker.link(mesh, {
|
|
11
|
-
service: 'GreetingService',
|
|
12
|
-
timeout: 5000,
|
|
13
|
-
});
|
|
14
|
-
await greeter.wait();
|
|
15
|
-
greeter.hello('websocket client').subscribe(message => {
|
|
16
|
-
console.log(message);
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=websocket-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../examples/websocket-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAErD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,qBAAqB,CAAA;AAEzD,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC;IACzC,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;CAC5B,CAAC,CAAA;AACF,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAM1B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;AAC5D,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAkB,IAAI,EAAE;IAC5D,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,IAAI;CAChB,CAAC,CAAA;AAEF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;AAEpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;IAClD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AACxB,CAAC,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { firstValueFrom, timeout } from 'rxjs';
|
|
2
|
-
import { RemoteServiceLinker, SpiderMesh } from '@spider-mesh/core';
|
|
3
|
-
import { WebsocketTransporter } from '../src/node.js';
|
|
4
|
-
const wsUrl = process.env.WS_URL || 'ws://127.0.0.1:8787';
|
|
5
|
-
const transporterOptions = {
|
|
6
|
-
heartbeatIntervalMs: 1000,
|
|
7
|
-
reconnectIntervalMs: 500,
|
|
8
|
-
};
|
|
9
|
-
const transporter = new WebsocketTransporter(transporterOptions);
|
|
10
|
-
transporter.connect(wsUrl);
|
|
11
|
-
console.log('WebSocket e2e client connected');
|
|
12
|
-
async function main() {
|
|
13
|
-
const mesh = new SpiderMesh({ transporters: [transporter] });
|
|
14
|
-
const greeter = RemoteServiceLinker.link(mesh, {
|
|
15
|
-
service: 'GreetingService',
|
|
16
|
-
timeout: 3000,
|
|
17
|
-
retry: 2,
|
|
18
|
-
});
|
|
19
|
-
const guard = setTimeout(() => {
|
|
20
|
-
console.error('WebSocket e2e client timed out');
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}, 10000);
|
|
23
|
-
try {
|
|
24
|
-
await greeter.wait(() => mesh.listRpcNodes('GreetingService').length > 0);
|
|
25
|
-
const result = await firstValueFrom(greeter.hello('websocket e2e').pipe(timeout(5000)));
|
|
26
|
-
console.log(result);
|
|
27
|
-
process.exit(0);
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
console.error(error);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
finally {
|
|
34
|
-
clearTimeout(guard);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
await main();
|
|
38
|
-
//# sourceMappingURL=websocket-e2e-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-e2e-client.js","sourceRoot":"","sources":["../../examples/websocket-e2e-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAmB,MAAM,MAAM,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAErD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,qBAAqB,CAAA;AACzD,MAAM,kBAAkB,GAAG;IACvB,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,GAAG;CAC3B,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,CAAA;AAChE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;AAM7C,KAAK,UAAU,IAAI;IACf,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAkB,IAAI,EAAE;QAC5D,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;KACX,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,EAAE,KAAK,CAAC,CAAA;IAET,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACzE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;YAAS,CAAC;QACP,YAAY,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;AACL,CAAC;AAED,MAAM,IAAI,EAAE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|