@spider-mesh/ws 1.0.130
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/build/src/SpiderMeshWebsocketTransporter.d.ts +12 -0
- package/build/src/SpiderMeshWebsocketTransporter.js +124 -0
- package/build/src/SpiderMeshWebsocketTransporter.js.map +1 -0
- package/build/tests/index.d.ts +1 -0
- package/build/tests/index.js +4 -0
- package/build/tests/index.js.map +1 -0
- package/package.json +44 -0
- package/tsconfig.json +37 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PublishMetadata, Encodable, SpiderMeshTransporter, SpiderMeshTransporterEvent, SpiderMeshTransporterEventMetadata, TcpNodeStatus } from '@spider-mesh/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Subject } from 'rxjs/internal/Subject';
|
|
4
|
+
export declare class SpiderMeshWebsocketTransporter implements SpiderMeshTransporter {
|
|
5
|
+
#private;
|
|
6
|
+
readonly transporter_id: string;
|
|
7
|
+
$nodes_status: Subject<TcpNodeStatus>;
|
|
8
|
+
constructor();
|
|
9
|
+
destroy(): void;
|
|
10
|
+
listen<T extends Encodable, Metadata extends SpiderMeshTransporterEventMetadata>(topic: string): Observable<SpiderMeshTransporterEvent<T, Metadata>>;
|
|
11
|
+
publish<T extends Encodable, Metadata extends SpiderMeshTransporterEventMetadata>(payload: PublishMetadata<T, Metadata>): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { finalize, map } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
|
|
3
|
+
import { firstValueFrom } from 'rxjs/internal/firstValueFrom';
|
|
4
|
+
import { fromEvent } from 'rxjs/internal/observable/fromEvent';
|
|
5
|
+
import { merge } from 'rxjs/internal/observable/merge';
|
|
6
|
+
import { timer } from 'rxjs/internal/observable/timer';
|
|
7
|
+
import { Subject } from 'rxjs/internal/Subject';
|
|
8
|
+
import { filter, tap, retry, mergeMap, mergeAll, takeUntil, throttleTime } from 'rxjs/operators';
|
|
9
|
+
import { v4 } from 'uuid';
|
|
10
|
+
import { Encoder } from '../../core/build/src/Encoder.js';
|
|
11
|
+
import { of } from 'rxjs/internal/observable/of';
|
|
12
|
+
import { lastValueFrom } from 'rxjs/internal/lastValueFrom';
|
|
13
|
+
import { from } from 'rxjs/internal/observable/from';
|
|
14
|
+
import { WebSocket, WebSocketServer } from 'ws';
|
|
15
|
+
const SPIDER_MESH_WEBSOCKET_SERVERS = process.env.SPIDER_MESH_WEBSOCKET_SERVERS;
|
|
16
|
+
const SPIDER_MESH_WEBSOCKET_SERVER_PORT = process.env.SPIDER_MESH_WEBSOCKET_SERVER_PORT;
|
|
17
|
+
export class SpiderMeshWebsocketTransporter {
|
|
18
|
+
transporter_id = v4();
|
|
19
|
+
$nodes_status = new Subject;
|
|
20
|
+
#listening_topics = new Map();
|
|
21
|
+
#remote_topics = new Map();
|
|
22
|
+
#$is_stoped = new BehaviorSubject(false);
|
|
23
|
+
#nodes = new Map;
|
|
24
|
+
#$version = new BehaviorSubject(1);
|
|
25
|
+
constructor() {
|
|
26
|
+
if (!SPIDER_MESH_WEBSOCKET_SERVERS && !SPIDER_MESH_WEBSOCKET_SERVER_PORT) {
|
|
27
|
+
throw new Error('Missing env: SPIDER_MESH_WEBSOCKET_SERVERS or SPIDER_MESH_WEBSOCKET_SERVER_PORT must be set');
|
|
28
|
+
}
|
|
29
|
+
this.#start_client();
|
|
30
|
+
this.#start_server();
|
|
31
|
+
this.#sync_peers();
|
|
32
|
+
}
|
|
33
|
+
destroy() {
|
|
34
|
+
this.#$is_stoped.next(true);
|
|
35
|
+
}
|
|
36
|
+
async #start_client() {
|
|
37
|
+
console.log({ SPIDER_MESH_WEBSOCKET_SERVERS });
|
|
38
|
+
SPIDER_MESH_WEBSOCKET_SERVERS && of(1).pipe(takeUntil(this.#$is_stoped.pipe(filter(stop => stop))), map(() => SPIDER_MESH_WEBSOCKET_SERVERS.split(',')), mergeAll(), map(url => url.trim()), mergeMap(url => of(1).pipe(mergeMap(async () => {
|
|
39
|
+
const ws = new WebSocket(url);
|
|
40
|
+
const error = await firstValueFrom(merge(fromEvent(ws, 'error').pipe(map(e => e)), fromEvent(ws, 'open').pipe(map(() => null))));
|
|
41
|
+
if (error) {
|
|
42
|
+
console.error(`Can not connect to ${url}`);
|
|
43
|
+
await firstValueFrom(timer(1000));
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
console.log(`Connected to ${url}`);
|
|
47
|
+
this.#say_hello(ws);
|
|
48
|
+
const error2 = await firstValueFrom(merge(fromEvent(ws, 'close'), fromEvent(ws, 'error'), fromEvent(ws, 'message').pipe(map(e => e), tap(e => this.#on_message(ws, e)), filter(() => false))));
|
|
49
|
+
ws.close();
|
|
50
|
+
await firstValueFrom(timer(1000));
|
|
51
|
+
throw error2;
|
|
52
|
+
}), retry()))).subscribe();
|
|
53
|
+
}
|
|
54
|
+
async #start_server() {
|
|
55
|
+
console.log({ SPIDER_MESH_WEBSOCKET_SERVER_PORT });
|
|
56
|
+
if (!SPIDER_MESH_WEBSOCKET_SERVER_PORT)
|
|
57
|
+
return;
|
|
58
|
+
const port = Number(SPIDER_MESH_WEBSOCKET_SERVER_PORT);
|
|
59
|
+
const wss = new WebSocketServer({ port });
|
|
60
|
+
wss.on('connection', (connetion) => {
|
|
61
|
+
connetion.addEventListener('message', e => this.#on_message(connetion, e));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
#sync_peers() {
|
|
65
|
+
this.#$version.pipe(takeUntil(this.#$is_stoped.pipe(filter(stop => stop))), throttleTime(2000), map(() => this.#nodes.values()), mergeAll(), tap(peer => this.#say_hello(peer.ws))).subscribe();
|
|
66
|
+
}
|
|
67
|
+
#on_message(ws, e) {
|
|
68
|
+
const msg = Encoder.decode(e.data);
|
|
69
|
+
if (!msg)
|
|
70
|
+
return;
|
|
71
|
+
if (msg.event == '#hello')
|
|
72
|
+
return this.#sync_peer(ws, msg.data);
|
|
73
|
+
const map = this.#listening_topics.get(msg.event);
|
|
74
|
+
map?.forEach(subject => subject.next(msg.data));
|
|
75
|
+
}
|
|
76
|
+
#sync_peer(ws, info) {
|
|
77
|
+
const is_new_peer = !this.#nodes.has(info.transporter_id);
|
|
78
|
+
this.#nodes.set(info.transporter_id, { ...info, ws });
|
|
79
|
+
for (const topic of info.listening) {
|
|
80
|
+
const set = this.#remote_topics.get(topic) || new Set();
|
|
81
|
+
set.add(info.transporter_id);
|
|
82
|
+
!this.#remote_topics.has(topic) && this.#remote_topics.set(topic, set);
|
|
83
|
+
}
|
|
84
|
+
if (!is_new_peer)
|
|
85
|
+
return;
|
|
86
|
+
this.#say_hello(ws);
|
|
87
|
+
this.$nodes_status.next({
|
|
88
|
+
online: true,
|
|
89
|
+
remote_transporter_id: info.transporter_id
|
|
90
|
+
});
|
|
91
|
+
merge(fromEvent(ws, 'close'), fromEvent(ws, 'error')).subscribe(() => {
|
|
92
|
+
this.#nodes.delete(info.transporter_id);
|
|
93
|
+
this.$nodes_status.next({
|
|
94
|
+
online: false,
|
|
95
|
+
remote_transporter_id: info.transporter_id
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
#say_hello(ws) {
|
|
100
|
+
const hello = {
|
|
101
|
+
listening: ['#hello', ...this.#listening_topics.keys()],
|
|
102
|
+
peers: [],
|
|
103
|
+
transporter_id: this.transporter_id,
|
|
104
|
+
version: this.#$version.value
|
|
105
|
+
};
|
|
106
|
+
ws.send(Encoder.encode({ event: '#hello', data: hello }));
|
|
107
|
+
}
|
|
108
|
+
listen(topic) {
|
|
109
|
+
const id = v4();
|
|
110
|
+
const subject = new Subject();
|
|
111
|
+
const map = this.#listening_topics.get(topic) || new Map();
|
|
112
|
+
map.set(id, subject);
|
|
113
|
+
!this.#listening_topics.has(topic) && this.#listening_topics.set(topic, map);
|
|
114
|
+
this.#$version.next(this.#$version.value + 1);
|
|
115
|
+
return subject.pipe(finalize(() => this.#listening_topics.get(topic)?.delete(id)));
|
|
116
|
+
}
|
|
117
|
+
async publish(payload) {
|
|
118
|
+
const node_ids = this.#remote_topics.get(payload.event);
|
|
119
|
+
if (!node_ids)
|
|
120
|
+
return;
|
|
121
|
+
await lastValueFrom(from(node_ids).pipe(map(node_id => this.#nodes.get(node_id)), filter(Boolean), map(node => node.ws.send(Encoder.encode(payload)))));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=SpiderMeshWebsocketTransporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpiderMeshWebsocketTransporter.js","sourceRoot":"","sources":["../../src/SpiderMeshWebsocketTransporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tests/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,MAAM,EAAE,GAAG,IAAI,8BAA8B,EAAE,CAAA;AAE/C,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@spider-mesh/ws",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "1.0.130",
|
|
5
|
+
"description": "Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters",
|
|
6
|
+
"main": "./build/src/index.js",
|
|
7
|
+
"types": "./build/src/index.d.ts",
|
|
8
|
+
"repository": {
|
|
9
|
+
"url": "https://github.com/spider-mesh/core"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"build/**/*",
|
|
13
|
+
"tsconfig.json",
|
|
14
|
+
"yarn.lock"
|
|
15
|
+
],
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/node": "^18.16.0",
|
|
18
|
+
"ts-node": "^10.9.1",
|
|
19
|
+
"typescript": "^5.0.4"
|
|
20
|
+
},
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"import": {
|
|
24
|
+
"types": "./build/src/index.d.ts",
|
|
25
|
+
"default": "./build/src/index.js"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"dev": "clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ",
|
|
31
|
+
"build": "tsc -v; rm -rf build && tsc -b tsconfig.json"
|
|
32
|
+
},
|
|
33
|
+
"author": "Duong Van Ba",
|
|
34
|
+
"license": "ISC",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@spider-mesh/core": "^1.0.129",
|
|
37
|
+
"@types/uuid": "^10.0.0",
|
|
38
|
+
"@types/ws": "^8.5.12",
|
|
39
|
+
"frame-stream": "^4.0.0",
|
|
40
|
+
"rxjs": "^7.8.1",
|
|
41
|
+
"uuid": "^10.0.0",
|
|
42
|
+
"ws": "^8.18.0"
|
|
43
|
+
}
|
|
44
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"strict": true,
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"removeComments": true,
|
|
7
|
+
"allowSyntheticDefaultImports": true,
|
|
8
|
+
"emitDecoratorMetadata": true,
|
|
9
|
+
"experimentalDecorators": true,
|
|
10
|
+
"target": "ESNext",
|
|
11
|
+
"sourceMap": true,
|
|
12
|
+
"baseUrl": ".",
|
|
13
|
+
"moduleResolution": "NodeNext",
|
|
14
|
+
"strictPropertyInitialization": false ,
|
|
15
|
+
"outDir": "./build",
|
|
16
|
+
"incremental": false,
|
|
17
|
+
"useDefineForClassFields": true,
|
|
18
|
+
"rootDir": ".",
|
|
19
|
+
"lib": [
|
|
20
|
+
"esnext.asynciterable",
|
|
21
|
+
"dom",
|
|
22
|
+
"ESNext.Array",
|
|
23
|
+
"ESNext.String",
|
|
24
|
+
"ESNext"
|
|
25
|
+
],
|
|
26
|
+
"esModuleInterop": true,
|
|
27
|
+
"importHelpers": true,
|
|
28
|
+
"strictNullChecks": true
|
|
29
|
+
},
|
|
30
|
+
"exclude": [
|
|
31
|
+
"node_modules",
|
|
32
|
+
"out",
|
|
33
|
+
"src/schema.ts",
|
|
34
|
+
"bin",
|
|
35
|
+
"./build/**/*"
|
|
36
|
+
]
|
|
37
|
+
}
|