@spider-mesh/core 1.0.129 → 1.0.132
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/Encoder.js +3 -0
- package/build/src/Encoder.js.map +1 -1
- package/build/src/SpiderMesh.d.ts +4 -2
- package/build/src/SpiderMesh.js +19 -45
- package/build/src/SpiderMesh.js.map +1 -1
- package/build/src/const.js +2 -2
- package/build/src/const.js.map +1 -1
- package/build/src/decorators/ListenEvent.d.ts +2 -2
- package/build/src/decorators/Microservice.d.ts +0 -30
- package/build/src/decorators/Microservice.js +0 -20
- package/build/src/decorators/Microservice.js.map +1 -1
- package/build/src/decorators/NestJSExposeMicroservice.d.ts +6 -0
- package/build/src/decorators/NestJSExposeMicroservice.js +12 -0
- package/build/src/decorators/NestJSExposeMicroservice.js.map +1 -0
- package/build/src/decorators/NestJSInjectMetadata.d.ts +7 -0
- package/build/src/decorators/NestJSInjectMetadata.js +14 -0
- package/build/src/decorators/NestJSInjectMetadata.js.map +1 -0
- package/build/src/decorators/NestJSLinkEvent.d.ts +20 -0
- package/build/src/decorators/NestJSLinkEvent.js +7 -0
- package/build/src/decorators/NestJSLinkEvent.js.map +1 -0
- package/build/src/decorators/NestJSLinkMicroservice.d.ts +6 -0
- package/build/src/decorators/NestJSLinkMicroservice.js +7 -0
- package/build/src/decorators/NestJSLinkMicroservice.js.map +1 -0
- package/build/src/decorators/OnMicroserviceReady.d.ts +1 -1
- package/build/src/index.d.ts +6 -2
- package/build/src/index.js +6 -2
- package/build/src/index.js.map +1 -1
- package/build/src/interfaces/SpiderMeshNode.d.ts +0 -6
- package/package.json +4 -2
- package/tsconfig.json +2 -1
- package/build/src/builtin-transporter/BuiltinTransporter.d.ts +0 -11
- package/build/src/builtin-transporter/BuiltinTransporter.js +0 -151
- package/build/src/builtin-transporter/BuiltinTransporter.js.map +0 -1
- package/build/src/builtin-transporter/RxjsTcpServer.d.ts +0 -6
- package/build/src/builtin-transporter/RxjsTcpServer.js +0 -31
- package/build/src/builtin-transporter/RxjsTcpServer.js.map +0 -1
- package/build/src/builtin-transporter/RxjsTcpSocket.d.ts +0 -19
- package/build/src/builtin-transporter/RxjsTcpSocket.js +0 -72
- package/build/src/builtin-transporter/RxjsTcpSocket.js.map +0 -1
- package/build/src/builtin-transporter/RxjsUdpServer.d.ts +0 -20
- package/build/src/builtin-transporter/RxjsUdpServer.js +0 -92
- package/build/src/builtin-transporter/RxjsUdpServer.js.map +0 -1
- package/build/src/helpers/waitFirstEvent.d.ts +0 -3
- package/build/src/helpers/waitFirstEvent.js +0 -5
- package/build/src/helpers/waitFirstEvent.js.map +0 -1
- package/build/tests/ExampleEvent.d.ts +0 -1
- package/build/tests/ExampleEvent.js +0 -2
- package/build/tests/ExampleEvent.js.map +0 -1
- package/build/tests/ExampleService.d.ts +0 -29
- package/build/tests/ExampleService.js +0 -70
- package/build/tests/ExampleService.js.map +0 -1
- package/build/tests/index.d.ts +0 -1
- package/build/tests/index.js +0 -119
- package/build/tests/index.js.map +0 -1
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "crypto";
|
|
2
|
-
import { Observable, Subject, filter, finalize, first, map, merge, mergeMap } from 'rxjs';
|
|
3
|
-
import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
|
|
4
|
-
import { RxjsTcpServer } from "./RxjsTcpServer.js";
|
|
5
|
-
import { RxjsUdpServer } from "./RxjsUdpServer.js";
|
|
6
|
-
import { UDP_BROADCAST_PORT, UDP_BROADCAST_ADDRESS, NAMEPSACE } from "../const.js";
|
|
7
|
-
import { Encoder } from "../Encoder.js";
|
|
8
|
-
export class BuiltinTransporter {
|
|
9
|
-
$nodes_status = new Subject();
|
|
10
|
-
#version = Date.now();
|
|
11
|
-
#listeners = new Map;
|
|
12
|
-
#nodes_map = new Map;
|
|
13
|
-
#events_map = new Map();
|
|
14
|
-
#$rebroadcast = new Subject();
|
|
15
|
-
transporter_id = randomUUID();
|
|
16
|
-
#$tcp = new RxjsTcpServer();
|
|
17
|
-
constructor() {
|
|
18
|
-
const $udp = new RxjsUdpServer({
|
|
19
|
-
$tcp_server_port: this.#$tcp.$port,
|
|
20
|
-
namespace: NAMEPSACE,
|
|
21
|
-
udp_port: UDP_BROADCAST_PORT,
|
|
22
|
-
udp_address: UDP_BROADCAST_ADDRESS,
|
|
23
|
-
transporter_id: this.transporter_id
|
|
24
|
-
});
|
|
25
|
-
merge(this.#$tcp, $udp).pipe(mergeMap(socket => {
|
|
26
|
-
const $ = socket.$incoming_data.pipe(map(buf => {
|
|
27
|
-
try {
|
|
28
|
-
return Encoder.decode(buf);
|
|
29
|
-
}
|
|
30
|
-
catch (e) { }
|
|
31
|
-
}), filter(Boolean), mergeMap(async (msg) => {
|
|
32
|
-
if (msg.topic == `#hello`) {
|
|
33
|
-
const host = socket.rawSocket.remoteAddress;
|
|
34
|
-
host && await this.#sync_node(socket, {
|
|
35
|
-
...msg.payload,
|
|
36
|
-
host
|
|
37
|
-
});
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const event = { ...msg, received_at: Date.now() };
|
|
41
|
-
this.#listeners.get(msg.topic)?.forEach(cb => cb(event));
|
|
42
|
-
}));
|
|
43
|
-
!socket.opened_by_remote_side && this.#tcp_hello(socket);
|
|
44
|
-
return $;
|
|
45
|
-
})).subscribe();
|
|
46
|
-
}
|
|
47
|
-
async #sync_node(current_socket, metadata) {
|
|
48
|
-
const host = metadata.host;
|
|
49
|
-
if (!host || !metadata.listening)
|
|
50
|
-
return;
|
|
51
|
-
for (const event of metadata.listening) {
|
|
52
|
-
!this.#events_map.has(event) && this.#events_map.set(event, new Set());
|
|
53
|
-
this.#events_map.get(event)?.add(metadata.transporter_id);
|
|
54
|
-
}
|
|
55
|
-
const cached = this.#nodes_map.get(metadata.transporter_id);
|
|
56
|
-
if (cached && cached.version > 0)
|
|
57
|
-
return;
|
|
58
|
-
const socket = current_socket.opened_by_remote_side ? (await RxjsTcpSocket.connect({
|
|
59
|
-
host,
|
|
60
|
-
port: metadata.port,
|
|
61
|
-
keepAlive: true,
|
|
62
|
-
retry_delay_ms: 200,
|
|
63
|
-
retry_times: 5
|
|
64
|
-
}) || current_socket) : current_socket;
|
|
65
|
-
const new_node = {
|
|
66
|
-
...metadata,
|
|
67
|
-
host,
|
|
68
|
-
socket,
|
|
69
|
-
peers: metadata.peers.map(p => ({ ...p, peers: [] }))
|
|
70
|
-
};
|
|
71
|
-
this.#nodes_map.set(metadata.transporter_id, new_node);
|
|
72
|
-
const remote_info = new_node.peers.find(p => p.transporter_id == this.transporter_id);
|
|
73
|
-
const peer_updated = remote_info ? remote_info.version == this.#version : false;
|
|
74
|
-
!peer_updated && this.#tcp_hello(socket);
|
|
75
|
-
this.$nodes_status.next({
|
|
76
|
-
online: true,
|
|
77
|
-
remote_transporter_id: metadata.transporter_id,
|
|
78
|
-
});
|
|
79
|
-
socket.$status.pipe(filter(status => status != 'ready'), first(), finalize(() => {
|
|
80
|
-
const node = this.#nodes_map.get(metadata.transporter_id);
|
|
81
|
-
node && node.listening.map(evt => {
|
|
82
|
-
this.#events_map.get(evt)?.delete(metadata.transporter_id);
|
|
83
|
-
});
|
|
84
|
-
this.#nodes_map.delete(metadata.transporter_id);
|
|
85
|
-
this.$nodes_status.next({
|
|
86
|
-
remote_transporter_id: metadata.transporter_id,
|
|
87
|
-
online: false
|
|
88
|
-
});
|
|
89
|
-
})).subscribe();
|
|
90
|
-
}
|
|
91
|
-
async #tcp_hello(tcp_socket) {
|
|
92
|
-
const port = this.#$tcp.$port.getValue();
|
|
93
|
-
const msg = {
|
|
94
|
-
created_at: Date.now(),
|
|
95
|
-
id: randomUUID(),
|
|
96
|
-
metadata: {
|
|
97
|
-
namespace: NAMEPSACE,
|
|
98
|
-
},
|
|
99
|
-
topic: '#hello',
|
|
100
|
-
sti: this.transporter_id,
|
|
101
|
-
payload: {
|
|
102
|
-
host: '',
|
|
103
|
-
transporter_id: this.transporter_id,
|
|
104
|
-
port,
|
|
105
|
-
listening: ['#hello', ...this.#listeners.keys()],
|
|
106
|
-
peers: [...this.#nodes_map.values()].map(({ socket, ...node }) => node),
|
|
107
|
-
version: this.#version
|
|
108
|
-
},
|
|
109
|
-
received_at: 0
|
|
110
|
-
};
|
|
111
|
-
tcp_socket.write(Encoder.encode(msg));
|
|
112
|
-
}
|
|
113
|
-
listen(topic) {
|
|
114
|
-
return new Observable(o => {
|
|
115
|
-
this.#version = Date.now();
|
|
116
|
-
!this.#listeners.has(topic) && this.#listeners.set(topic, new Map());
|
|
117
|
-
const id = randomUUID();
|
|
118
|
-
this.#listeners.get(topic)?.set(id, (data) => o.next(data));
|
|
119
|
-
this.#$rebroadcast.next();
|
|
120
|
-
return () => {
|
|
121
|
-
this.#version = Date.now();
|
|
122
|
-
this.#listeners.get(topic)?.delete(id);
|
|
123
|
-
this.#listeners.get(topic)?.size == 0 && this.#listeners.delete(topic);
|
|
124
|
-
this.#$rebroadcast.next();
|
|
125
|
-
};
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
async publish({ payload, event, metadata, rti }) {
|
|
129
|
-
const msg = {
|
|
130
|
-
created_at: Date.now(),
|
|
131
|
-
id: randomUUID(),
|
|
132
|
-
metadata,
|
|
133
|
-
payload,
|
|
134
|
-
received_at: 0,
|
|
135
|
-
sti: this.transporter_id,
|
|
136
|
-
topic: event || rti || '#'
|
|
137
|
-
};
|
|
138
|
-
const buffer = Encoder.encode(msg);
|
|
139
|
-
if (rti) {
|
|
140
|
-
await this.#nodes_map.get(rti)?.socket?.write(buffer);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
for (const node_id of this.#events_map.get(event) || []) {
|
|
144
|
-
const node = this.#nodes_map.get(node_id);
|
|
145
|
-
await node?.socket?.write(buffer);
|
|
146
|
-
}
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=BuiltinTransporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltinTransporter.js","sourceRoot":"","sources":["../../../src/builtin-transporter/BuiltinTransporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { createServer } from "net";
|
|
2
|
-
import { BehaviorSubject, Observable, firstValueFrom, fromEvent } from "rxjs";
|
|
3
|
-
import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
|
|
4
|
-
export class RxjsTcpServer extends Observable {
|
|
5
|
-
$port = new BehaviorSubject(0);
|
|
6
|
-
constructor(start_port = 10001) {
|
|
7
|
-
super(o => {
|
|
8
|
-
setTimeout(async () => {
|
|
9
|
-
for (let tcp_port = start_port; true; tcp_port++) {
|
|
10
|
-
const server = createServer();
|
|
11
|
-
const success = await new Promise(s => {
|
|
12
|
-
server.once('listening', () => s(true));
|
|
13
|
-
server.once('error', () => s(false));
|
|
14
|
-
server.listen(tcp_port);
|
|
15
|
-
});
|
|
16
|
-
if (!success)
|
|
17
|
-
continue;
|
|
18
|
-
this.$port.next(tcp_port);
|
|
19
|
-
server.on('connection', async (socket) => {
|
|
20
|
-
const stable_socket = await RxjsTcpSocket.join(socket);
|
|
21
|
-
o.next(stable_socket);
|
|
22
|
-
});
|
|
23
|
-
const $error = fromEvent(server, 'error');
|
|
24
|
-
await firstValueFrom($error);
|
|
25
|
-
server.removeAllListeners();
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=RxjsTcpServer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RxjsTcpServer.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsTcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAW,cAAc,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,MAAM,OAAO,aAAc,SAAQ,UAAyB;IAExD,KAAK,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAA;IAEtC,YAAY,aAAqB,KAAK;QAClC,KAAK,CAAC,CAAC,CAAC,EAAE;YACN,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,KAAK,IAAI,QAAQ,GAAG,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBAC9C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;oBAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,CAAC,EAAE;wBAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;wBACvC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;wBACpC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC3B,CAAC,CAAC,CAAA;oBACF,IAAI,CAAC,OAAO;wBAAE,SAAQ;oBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACzB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;wBACnC,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBACtD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;oBACzB,CAAC,CAAC,CAAA;oBACF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAsB,CAAA;oBAC9D,MAAM,cAAc,CAAC,MAAM,CAAC,CAAA;oBAC5B,MAAM,CAAC,kBAAkB,EAAE,CAAA;iBAC9B;YACL,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;CAEJ"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import { TcpNetConnectOpts, Socket } from "net";
|
|
4
|
-
import { BehaviorSubject, Subject } from "rxjs";
|
|
5
|
-
export declare class RxjsTcpSocket {
|
|
6
|
-
#private;
|
|
7
|
-
readonly opened_by_remote_side: boolean;
|
|
8
|
-
$incoming_data: Subject<Buffer>;
|
|
9
|
-
$status: BehaviorSubject<"error" | "connecting" | "ready" | "closed">;
|
|
10
|
-
rawSocket: Socket;
|
|
11
|
-
private constructor();
|
|
12
|
-
static connect({ retry_times, retry_delay_ms, ...options }: TcpNetConnectOpts & {
|
|
13
|
-
retry_times?: number;
|
|
14
|
-
retry_delay_ms?: number;
|
|
15
|
-
}): Promise<RxjsTcpSocket | null>;
|
|
16
|
-
static join(socket: Socket): Promise<RxjsTcpSocket>;
|
|
17
|
-
write(data: Buffer): void;
|
|
18
|
-
close(): void;
|
|
19
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { createConnection } from "net";
|
|
2
|
-
import { BehaviorSubject, Subject, finalize, firstValueFrom, fromEvent, map, merge, takeUntil, tap, timer } from "rxjs";
|
|
3
|
-
import frame from 'frame-stream';
|
|
4
|
-
import { sleep } from "../../src/helpers/sleep.js";
|
|
5
|
-
export class RxjsTcpSocket {
|
|
6
|
-
opened_by_remote_side;
|
|
7
|
-
#$outgoing_data = new Subject();
|
|
8
|
-
$incoming_data = new Subject();
|
|
9
|
-
$status = new BehaviorSubject('connecting');
|
|
10
|
-
rawSocket;
|
|
11
|
-
constructor(opened_by_remote_side) {
|
|
12
|
-
this.opened_by_remote_side = opened_by_remote_side;
|
|
13
|
-
opened_by_remote_side && this.$status.next('ready');
|
|
14
|
-
}
|
|
15
|
-
static connect({ retry_times = 5, retry_delay_ms = 5000, ...options }) {
|
|
16
|
-
const $this = new this(false);
|
|
17
|
-
return new Promise(async (s) => {
|
|
18
|
-
for (let i = 0; i <= retry_times; i++) {
|
|
19
|
-
const socket = createConnection({ ...options, autoSelectFamily: true });
|
|
20
|
-
const connected = await firstValueFrom(merge(fromEvent(socket, 'connect').pipe(map(() => true)), fromEvent(socket, 'error').pipe(map(() => false)), timer(1000).pipe(map(() => false))));
|
|
21
|
-
if (!connected) {
|
|
22
|
-
socket.destroy();
|
|
23
|
-
await sleep(retry_delay_ms);
|
|
24
|
-
if (i == 0) {
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
$this.$status.next('ready');
|
|
32
|
-
const $error = $this.#join_util_error(socket);
|
|
33
|
-
s($this);
|
|
34
|
-
i = 0;
|
|
35
|
-
const status = await $error;
|
|
36
|
-
if (status == 'closed')
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
s(null);
|
|
40
|
-
$this.$status.next('error');
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
static async join(socket) {
|
|
44
|
-
const $this = new this(true);
|
|
45
|
-
$this.#join_util_error(socket);
|
|
46
|
-
return $this;
|
|
47
|
-
}
|
|
48
|
-
async #join_util_error(socket) {
|
|
49
|
-
const $error = merge(fromEvent(socket, 'error').pipe(map(() => 'error')), fromEvent(socket, 'close').pipe(map(() => 'closed')), fromEvent(socket, 'timeout').pipe(map(() => 'error')), fromEvent(socket, 'end').pipe(map(() => 'closed'))).pipe(tap(status => this.$status.next(status)));
|
|
50
|
-
this.rawSocket = socket;
|
|
51
|
-
const encoder = frame.encode();
|
|
52
|
-
const decoder = frame.decode();
|
|
53
|
-
decoder.on('data', (msg) => {
|
|
54
|
-
this.$incoming_data.next(msg);
|
|
55
|
-
});
|
|
56
|
-
socket.on('data', data => decoder.writable && decoder.write(data));
|
|
57
|
-
encoder.on('data', buffer => socket.writable && socket.writable && socket.write(buffer));
|
|
58
|
-
this.#$outgoing_data.pipe(takeUntil($error), finalize(() => {
|
|
59
|
-
socket.removeAllListeners();
|
|
60
|
-
decoder.removeAllListeners();
|
|
61
|
-
encoder.removeAllListeners();
|
|
62
|
-
}), map(data => encoder.writable && encoder.write(data), 1)).subscribe();
|
|
63
|
-
return firstValueFrom($error);
|
|
64
|
-
}
|
|
65
|
-
write(data) {
|
|
66
|
-
this.#$outgoing_data.next(data);
|
|
67
|
-
}
|
|
68
|
-
close() {
|
|
69
|
-
this.rawSocket?.end();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=RxjsTcpSocket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RxjsTcpSocket.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsTcpSocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject, Observable } from "rxjs";
|
|
2
|
-
import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
|
|
3
|
-
export type BroadcastMessage = {
|
|
4
|
-
port: number;
|
|
5
|
-
transporter_id: string;
|
|
6
|
-
namespace: string;
|
|
7
|
-
sig: string;
|
|
8
|
-
};
|
|
9
|
-
export type RxjsUdpBroadcasterConfig = {
|
|
10
|
-
namespace: string;
|
|
11
|
-
udp_address?: string;
|
|
12
|
-
udp_port: number;
|
|
13
|
-
transporter_id: string;
|
|
14
|
-
$tcp_server_port: BehaviorSubject<number>;
|
|
15
|
-
};
|
|
16
|
-
export declare class RxjsUdpServer extends Observable<RxjsTcpSocket> {
|
|
17
|
-
#private;
|
|
18
|
-
private config;
|
|
19
|
-
constructor(config: RxjsUdpBroadcasterConfig);
|
|
20
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { createSocket } from "dgram";
|
|
2
|
-
import { Observable, combineLatest, filter, first, from, interval, mergeMap, tap } from "rxjs";
|
|
3
|
-
import { networkInterfaces } from 'os';
|
|
4
|
-
import { createHmac } from "crypto";
|
|
5
|
-
import { BROADCAST_INTERVAL, UDP_SECRET_KEY } from "../const.js";
|
|
6
|
-
import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
|
|
7
|
-
export class RxjsUdpServer extends Observable {
|
|
8
|
-
config;
|
|
9
|
-
constructor(config) {
|
|
10
|
-
super(o => {
|
|
11
|
-
const nodes = new Set();
|
|
12
|
-
const { udp_port } = config;
|
|
13
|
-
const udp = createSocket({
|
|
14
|
-
type: 'udp4',
|
|
15
|
-
reuseAddr: true
|
|
16
|
-
});
|
|
17
|
-
udp.bind({
|
|
18
|
-
address: '0.0.0.0',
|
|
19
|
-
port: udp_port,
|
|
20
|
-
}, () => udp.setBroadcast(true));
|
|
21
|
-
udp.on('message', async (data, rinfo) => {
|
|
22
|
-
try {
|
|
23
|
-
const msg = JSON.parse(data.toString('utf-8'));
|
|
24
|
-
if (msg.namespace != config.namespace)
|
|
25
|
-
return;
|
|
26
|
-
if (msg.transporter_id == config.transporter_id)
|
|
27
|
-
return;
|
|
28
|
-
if (nodes.has(msg.transporter_id))
|
|
29
|
-
return;
|
|
30
|
-
const sig = createHmac('SHA256', UDP_SECRET_KEY).update(`${msg.namespace}|${msg.transporter_id}|${msg.port}`).digest('base64');
|
|
31
|
-
if (msg.sig != sig)
|
|
32
|
-
return;
|
|
33
|
-
const socket = await RxjsTcpSocket.connect({
|
|
34
|
-
...msg,
|
|
35
|
-
host: rinfo.address,
|
|
36
|
-
keepAlive: true,
|
|
37
|
-
retry_delay_ms: 5000,
|
|
38
|
-
retry_times: 5
|
|
39
|
-
});
|
|
40
|
-
if (socket) {
|
|
41
|
-
if (nodes.has(msg.transporter_id)) {
|
|
42
|
-
socket.close();
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
nodes.add(msg.transporter_id);
|
|
46
|
-
o.next(socket);
|
|
47
|
-
socket.$status.pipe(filter(s => s == 'closed' || s == 'error'), tap(s => nodes.delete(msg.transporter_id)), first()).subscribe();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
config.$tcp_server_port.subscribe(port => this.#broadcast(udp, port));
|
|
55
|
-
if (BROADCAST_INTERVAL) {
|
|
56
|
-
combineLatest([
|
|
57
|
-
config.$tcp_server_port,
|
|
58
|
-
interval(BROADCAST_INTERVAL)
|
|
59
|
-
]).subscribe(([port]) => port && this.#broadcast(udp, port));
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
this.config = config;
|
|
63
|
-
}
|
|
64
|
-
#broadcast(udp, port) {
|
|
65
|
-
const { namespace, transporter_id, udp_port, udp_address = '' } = this.config;
|
|
66
|
-
const broadcast_ips = ['255.255.255.255'];
|
|
67
|
-
const network_address = (Object.entries(networkInterfaces())
|
|
68
|
-
.filter(([i]) => !i.startsWith('lo'))
|
|
69
|
-
.map(e => e[1])
|
|
70
|
-
.flat(2)
|
|
71
|
-
.filter(d => d && d.family == 'IPv4' && d.address)
|
|
72
|
-
.map(d => d.address.split('.').slice(0, 3).join('.') + '.255'));
|
|
73
|
-
const env_address = udp_address.split(',').map(a => a.trim()).filter(a => !!a);
|
|
74
|
-
for (const address of [...network_address, ...env_address]) {
|
|
75
|
-
const splited = address.split('.');
|
|
76
|
-
splited.length == 4 && broadcast_ips.push(address);
|
|
77
|
-
splited.length == 3 && new Array(256).fill(0).map((_, i) => broadcast_ips.push(`${address}.${i}`));
|
|
78
|
-
}
|
|
79
|
-
const msg = {
|
|
80
|
-
namespace,
|
|
81
|
-
transporter_id,
|
|
82
|
-
port,
|
|
83
|
-
sig: ''
|
|
84
|
-
};
|
|
85
|
-
const sig = createHmac('SHA256', UDP_SECRET_KEY).update(`${msg.namespace}|${msg.transporter_id}|${msg.port}`).digest('base64');
|
|
86
|
-
const json = JSON.stringify({ ...msg, sig });
|
|
87
|
-
from(broadcast_ips).pipe(mergeMap(async (host) => {
|
|
88
|
-
await udp.send(Buffer.from(json), udp_port, host);
|
|
89
|
-
}, 50)).subscribe();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=RxjsUdpServer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RxjsUdpServer.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsUdpServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { firstValueFrom, merge, fromEvent, map } from "rxjs";
|
|
2
|
-
export function waitFirstEvent(target, ...events) {
|
|
3
|
-
return firstValueFrom(merge(...events.map(e => fromEvent(target, e).pipe(map((...args) => [e, ...args])))));
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=waitFirstEvent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitFirstEvent.js","sourceRoot":"","sources":["../../../src/helpers/waitFirstEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAG7D,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,GAAG,MAAgB;IACpE,OAAO,cAAc,CAAC,KAAK,CACvB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExampleEvent.js","sourceRoot":"","sources":["../../tests/ExampleEvent.ts"],"names":[],"mappings":""}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { SpiderMesh } from "../src/index.js";
|
|
3
|
-
export declare class ExampleService {
|
|
4
|
-
private sm;
|
|
5
|
-
online: boolean;
|
|
6
|
-
constructor(sm: SpiderMesh);
|
|
7
|
-
sum(a: number, b: number): number;
|
|
8
|
-
asyncSum(a: number, b: number): Promise<number>;
|
|
9
|
-
interator(): import("rxjs").Observable<number>;
|
|
10
|
-
asyncInterator(): Promise<import("rxjs").Observable<number>>;
|
|
11
|
-
buffer(): Promise<Buffer>;
|
|
12
|
-
nulla(): Promise<void>;
|
|
13
|
-
interatorBufferMix(): Promise<import("rxjs").Observable<{
|
|
14
|
-
v: Set<number>;
|
|
15
|
-
a?: undefined;
|
|
16
|
-
b?: undefined;
|
|
17
|
-
c?: undefined;
|
|
18
|
-
} | {
|
|
19
|
-
a: number;
|
|
20
|
-
b: string;
|
|
21
|
-
c: Buffer;
|
|
22
|
-
v?: undefined;
|
|
23
|
-
} | null | undefined>>;
|
|
24
|
-
errror_test(): void;
|
|
25
|
-
obj_errror_test(): void;
|
|
26
|
-
i: number;
|
|
27
|
-
retry(): number;
|
|
28
|
-
get_id(): Promise<string>;
|
|
29
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { firstValueFrom, timer, from, mergeMap } from "rxjs";
|
|
3
|
-
import { Microservice, SpiderMesh } from "../src/index.js";
|
|
4
|
-
let ExampleService = class ExampleService {
|
|
5
|
-
sm;
|
|
6
|
-
online = true;
|
|
7
|
-
constructor(sm) {
|
|
8
|
-
this.sm = sm;
|
|
9
|
-
console.log(`Example service running`);
|
|
10
|
-
}
|
|
11
|
-
sum(a, b) {
|
|
12
|
-
return a + b;
|
|
13
|
-
}
|
|
14
|
-
async asyncSum(a, b) {
|
|
15
|
-
await firstValueFrom(timer(1000));
|
|
16
|
-
return a + b;
|
|
17
|
-
}
|
|
18
|
-
interator() {
|
|
19
|
-
return from([1, 2, 3, 4, 5]);
|
|
20
|
-
}
|
|
21
|
-
async asyncInterator() {
|
|
22
|
-
return from([1, 2, 3, 4, 5]).pipe(mergeMap(async (d) => {
|
|
23
|
-
await firstValueFrom(timer(1000));
|
|
24
|
-
return d;
|
|
25
|
-
}, 1));
|
|
26
|
-
}
|
|
27
|
-
async buffer() {
|
|
28
|
-
return Buffer.from('ahihihi', 'utf-8');
|
|
29
|
-
}
|
|
30
|
-
async nulla() {
|
|
31
|
-
}
|
|
32
|
-
async interatorBufferMix() {
|
|
33
|
-
return from([
|
|
34
|
-
null,
|
|
35
|
-
undefined,
|
|
36
|
-
{ v: new Set([1, 2,]) },
|
|
37
|
-
{ a: 1, b: "s", c: Buffer.from('abc') },
|
|
38
|
-
]).pipe(mergeMap(async (d) => {
|
|
39
|
-
await firstValueFrom(timer(100));
|
|
40
|
-
return d;
|
|
41
|
-
}, 1));
|
|
42
|
-
}
|
|
43
|
-
errror_test() {
|
|
44
|
-
throw { a: { b: "c" } };
|
|
45
|
-
}
|
|
46
|
-
obj_errror_test() {
|
|
47
|
-
throw new Error('AHIHI');
|
|
48
|
-
}
|
|
49
|
-
i = 1;
|
|
50
|
-
retry() {
|
|
51
|
-
this.i++;
|
|
52
|
-
console.log({ i: this.i });
|
|
53
|
-
if (this.i % 3 == 0) {
|
|
54
|
-
const a = this.i;
|
|
55
|
-
this.i = 0;
|
|
56
|
-
return a;
|
|
57
|
-
}
|
|
58
|
-
throw { e: 1 };
|
|
59
|
-
}
|
|
60
|
-
async get_id() {
|
|
61
|
-
const $ = await this.sm.$metadata();
|
|
62
|
-
return $.node_id;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
ExampleService = __decorate([
|
|
66
|
-
Microservice(),
|
|
67
|
-
__metadata("design:paramtypes", [SpiderMesh])
|
|
68
|
-
], ExampleService);
|
|
69
|
-
export { ExampleService };
|
|
70
|
-
//# sourceMappingURL=ExampleService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExampleService.js","sourceRoot":"","sources":["../../tests/ExampleService.ts"],"names":[],"mappings":"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"}
|
package/build/tests/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|