@spider-mesh/ws 1.0.137 → 1.0.139
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.
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { SpiderMesh, Encoder, randomUUID } from '@spider-mesh/core';
|
|
2
2
|
import { timer, fromEvent, firstValueFrom, BehaviorSubject, Subject, from, lastValueFrom, of, merge } from 'rxjs';
|
|
3
3
|
import { finalize, map, filter, tap, retry, mergeMap, mergeAll, takeUntil, throttleTime, } from 'rxjs/operators';
|
|
4
|
-
import {
|
|
4
|
+
import { WebSocketServer, WebSocket as NpmWebSocket } from 'ws';
|
|
5
|
+
const WebsocketClient = (typeof WebSocket !== 'undefined' ? WebSocket : NpmWebSocket);
|
|
5
6
|
const SPIDER_MESH_WEBSOCKET_SERVERS = process.env.SPIDER_MESH_WEBSOCKET_SERVERS;
|
|
6
7
|
const SPIDER_MESH_WEBSOCKET_SERVER_PORT = process.env.SPIDER_MESH_WEBSOCKET_SERVER_PORT;
|
|
7
8
|
export class SpiderMeshWebsocketTransporter {
|
|
@@ -23,8 +24,8 @@ export class SpiderMeshWebsocketTransporter {
|
|
|
23
24
|
}
|
|
24
25
|
async #start_client(urls) {
|
|
25
26
|
urls && of(urls).pipe(takeUntil(this.#$is_stoped.pipe(filter(stop => stop))), map(urls => urls.split(',')), mergeAll(), map(url => url.trim()), mergeMap(url => of(1).pipe(mergeMap(async () => {
|
|
26
|
-
const ws = new
|
|
27
|
-
const error = await firstValueFrom(merge(fromEvent(ws, 'error').pipe(map(e => e)), fromEvent(ws, 'open').pipe(map(() => null))));
|
|
27
|
+
const ws = new WebsocketClient(url);
|
|
28
|
+
const error = await firstValueFrom(merge(fromEvent(ws, 'close').pipe(map(e => { throw new Error('Connection closed'); })), fromEvent(ws, 'error').pipe(map(e => e)), fromEvent(ws, 'open').pipe(map(() => null))));
|
|
28
29
|
if (error) {
|
|
29
30
|
console.error(`Can not connect to ${url}`);
|
|
30
31
|
await firstValueFrom(timer(1000));
|
|
@@ -41,7 +42,7 @@ export class SpiderMeshWebsocketTransporter {
|
|
|
41
42
|
async #start_server(port) {
|
|
42
43
|
if (!port)
|
|
43
44
|
return;
|
|
44
|
-
const wss = new WebSocketServer({ port: Number(
|
|
45
|
+
const wss = new WebSocketServer({ port: Number(port) });
|
|
45
46
|
wss.on('connection', (connetion) => {
|
|
46
47
|
connetion.addEventListener('message', e => this.#on_message(connetion, e));
|
|
47
48
|
});
|
|
@@ -50,7 +51,8 @@ export class SpiderMeshWebsocketTransporter {
|
|
|
50
51
|
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();
|
|
51
52
|
}
|
|
52
53
|
#on_message(ws, e) {
|
|
53
|
-
const
|
|
54
|
+
const data = e.data instanceof ArrayBuffer ? Buffer.from(e.data) : e.data;
|
|
55
|
+
const msg = Encoder.decode(data);
|
|
54
56
|
if (!msg)
|
|
55
57
|
return;
|
|
56
58
|
msg.received_at = Date.now();
|
|
@@ -119,9 +121,9 @@ export class SpiderMeshWebsocketTransporter {
|
|
|
119
121
|
topic: payload.event
|
|
120
122
|
};
|
|
121
123
|
const node_ids = this.#remote_topics.get(payload.event);
|
|
122
|
-
if (!node_ids)
|
|
124
|
+
if (!node_ids || node_ids.size == 0)
|
|
123
125
|
return;
|
|
124
|
-
await lastValueFrom(from(node_ids).pipe(map(node_id => this.#nodes.get(node_id)), filter(Boolean), map(node => node.ws.send(Encoder.encode(p)))));
|
|
126
|
+
await lastValueFrom(from(node_ids).pipe(map(node_id => this.#nodes.get(node_id)), filter(Boolean), map(node => node.ws.send(Encoder.encode(p)))), { defaultValue: [] });
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
//# sourceMappingURL=SpiderMeshWebsocketTransporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpiderMeshWebsocketTransporter.js","sourceRoot":"","sources":["../../src/SpiderMeshWebsocketTransporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoI,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACrM,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAClH,OAAO,EACH,QAAQ,EAAE,GAAG,EACb,MAAM,EACN,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"SpiderMeshWebsocketTransporter.js","sourceRoot":"","sources":["../../src/SpiderMeshWebsocketTransporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spider-mesh/ws",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.139",
|
|
5
5
|
"description": "Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters",
|
|
6
6
|
"main": "./build/src/index.js",
|
|
7
7
|
"types": "./build/src/index.d.ts",
|