@spider-mesh/core 1.0.20 → 1.0.22
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/index.d.ts +0 -1
- package/build/index.js +0 -1
- package/build/index.js.map +1 -1
- package/build/src/BuiltinTransporter.d.ts +10 -12
- package/build/src/BuiltinTransporter.js +106 -259
- package/build/src/BuiltinTransporter.js.map +1 -1
- package/build/src/RemoteService.d.ts +11 -6
- package/build/src/RxjsTcpServer.d.ts +9 -0
- package/build/src/RxjsTcpServer.js +31 -0
- package/build/src/RxjsTcpServer.js.map +1 -0
- package/build/src/RxjsTcpSocket.d.ts +14 -0
- package/build/src/RxjsTcpSocket.js +83 -0
- package/build/src/RxjsTcpSocket.js.map +1 -0
- package/build/src/RxjsUdpBroadcaster.d.ts +20 -0
- package/build/src/RxjsUdpBroadcaster.js +60 -0
- package/build/src/RxjsUdpBroadcaster.js.map +1 -0
- package/build/src/SpiderMesh.d.ts +31 -16
- package/build/src/SpiderMesh.js +225 -167
- package/build/src/SpiderMesh.js.map +1 -1
- package/build/src/SpiderMeshNode.d.ts +4 -5
- package/build/src/SpiderMeshTransporter.d.ts +19 -8
- package/build/src/decorators/Microservice.d.ts +5 -2
- package/build/src/decorators/Microservice.js +11 -12
- package/build/src/decorators/Microservice.js.map +1 -1
- package/build/src/decorators/SubscribeEvent.d.ts +6 -0
- package/build/src/decorators/SubscribeEvent.js +14 -0
- package/build/src/decorators/SubscribeEvent.js.map +1 -0
- package/build/src/helpers/sleep.d.ts +1 -0
- package/build/src/helpers/sleep.js +2 -0
- package/build/src/helpers/sleep.js.map +1 -0
- package/build/src/helpers/waitFirstEvent.d.ts +3 -0
- package/build/src/helpers/waitFirstEvent.js +5 -0
- package/build/src/helpers/waitFirstEvent.js.map +1 -0
- package/package.json +3 -2
- package/yarn.lock +197 -0
- package/build/src/decorators/createMicroserviceEvent.d.ts +0 -16
- package/build/src/decorators/createMicroserviceEvent.js +0 -54
- package/build/src/decorators/createMicroserviceEvent.js.map +0 -1
package/build/index.d.ts
CHANGED
|
@@ -5,5 +5,4 @@ export { SpiderMeshTransporter, SpiderMeshTransporterFactory } from './src/Spide
|
|
|
5
5
|
export { RemoteService } from './src/RemoteService';
|
|
6
6
|
export { RPCOptions, RPCOptionsList } from './src/RPCOptions';
|
|
7
7
|
export { OnMicroserviceReady } from './src/decorators/OnMicroserviceReady';
|
|
8
|
-
export { createMicroserviceEvent } from './src/decorators/createMicroserviceEvent';
|
|
9
8
|
export { Microservice } from './src/decorators/Microservice';
|
package/build/index.js
CHANGED
|
@@ -2,6 +2,5 @@ export { BuiltinTransporter } from './src/BuiltinTransporter';
|
|
|
2
2
|
export { SpiderMesh } from './src/SpiderMesh';
|
|
3
3
|
export { RPCOptionsList } from './src/RPCOptions';
|
|
4
4
|
export { OnMicroserviceReady } from './src/decorators/OnMicroserviceReady';
|
|
5
|
-
export { createMicroserviceEvent } from './src/decorators/createMicroserviceEvent';
|
|
6
5
|
export { Microservice } from './src/decorators/Microservice';
|
|
7
6
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import { SpiderMeshTransporter } from "./SpiderMeshTransporter";
|
|
1
|
+
import { PublishMetadata, SpiderMeshTransporter, SpiderMeshTransporterEvent } from "./SpiderMeshTransporter";
|
|
2
|
+
import { Observable, Subject } from 'rxjs';
|
|
2
3
|
export declare class BuiltinTransporter implements SpiderMeshTransporter {
|
|
3
4
|
#private;
|
|
4
5
|
readonly node_id: string;
|
|
5
6
|
readonly namespace: string;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
unsubscribe: () => void;
|
|
15
|
-
};
|
|
16
|
-
publish<T = any>(event: string, node_id: string | null, data: T, queue?: boolean): Promise<void>;
|
|
7
|
+
readonly $nodes_status: Subject<{
|
|
8
|
+
node_id: string;
|
|
9
|
+
online: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
constructor(node_id: string, namespace?: string);
|
|
12
|
+
start(): Promise<void>;
|
|
13
|
+
listen<T = any>(topic: string): Observable<SpiderMeshTransporterEvent<T>>;
|
|
14
|
+
publish<T = any>({ data, event, node_id }: PublishMetadata<T>): Promise<void>;
|
|
17
15
|
}
|
|
@@ -1,301 +1,148 @@
|
|
|
1
1
|
import { randomUUID } from "crypto";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { PassThrough } from "stream";
|
|
2
|
+
import { Observable, Subject, debounceTime, filter, first, map, merge, mergeAll, mergeMap, takeUntil } from 'rxjs';
|
|
3
|
+
import { RxjsTcpSocket } from "./RxjsTcpSocket";
|
|
4
|
+
import { RxjsTcpServer } from "./RxjsTcpServer";
|
|
5
|
+
import { RxjsUdpBroadcaster } from "./RxjsUdpBroadcaster";
|
|
7
6
|
const UDP_PORT = Number(process.env.UDP_PORT || 10000);
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
#input = new PassThrough();
|
|
11
|
-
static #separator = String.fromCharCode(0x1E);
|
|
12
|
-
constructor() {
|
|
13
|
-
super();
|
|
14
|
-
}
|
|
15
|
-
async #connect(socket) {
|
|
16
|
-
let buffer = '';
|
|
17
|
-
this.#input.removeAllListeners('data');
|
|
18
|
-
this.#input.on('data', data => socket.write(data));
|
|
19
|
-
socket.on('data', msg => {
|
|
20
|
-
buffer += msg.toString('utf8');
|
|
21
|
-
if (buffer.endsWith(StableTCP.#separator)) {
|
|
22
|
-
for (const part of buffer.split(StableTCP.#separator)) {
|
|
23
|
-
if (part != '') {
|
|
24
|
-
try {
|
|
25
|
-
const json = JSON.parse(part);
|
|
26
|
-
buffer = '';
|
|
27
|
-
this.emit('data', json);
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
console.log({
|
|
31
|
-
can_not_decode: part
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
buffer = '';
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
static async init(options) {
|
|
41
|
-
const $this = new this();
|
|
42
|
-
await new Promise(async (s) => {
|
|
43
|
-
for (let i = 0; i <= 5; i++) {
|
|
44
|
-
const socket = await new Promise(s => {
|
|
45
|
-
const socket = createConnection(options);
|
|
46
|
-
socket.on('ready', () => s(socket));
|
|
47
|
-
socket.on('connect', () => s(socket));
|
|
48
|
-
socket.on('timeout', () => s(null));
|
|
49
|
-
socket.on('error', (e) => s(null));
|
|
50
|
-
});
|
|
51
|
-
if (!socket)
|
|
52
|
-
return s(false);
|
|
53
|
-
await $this.#connect(socket);
|
|
54
|
-
i = 0;
|
|
55
|
-
s(true);
|
|
56
|
-
// await socket error here
|
|
57
|
-
const code = await new Promise(s => {
|
|
58
|
-
socket.on('close', () => s('close'));
|
|
59
|
-
socket.on('error', () => s('error'));
|
|
60
|
-
socket.on('end', () => s('close'));
|
|
61
|
-
});
|
|
62
|
-
if (code == 'close') {
|
|
63
|
-
$this.emit('close');
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
process.env.SPIDERMESH_DEBUG && console.log(`[${new Date().toLocaleTimeString()}] Socket error, retrying in 1 sec`);
|
|
67
|
-
await new Promise(s => setTimeout(s, 1000));
|
|
68
|
-
}
|
|
69
|
-
s(false);
|
|
70
|
-
});
|
|
71
|
-
return $this;
|
|
72
|
-
}
|
|
73
|
-
static async join(socket) {
|
|
74
|
-
const $this = new this();
|
|
75
|
-
socket.on('error', () => $this.emit('error'));
|
|
76
|
-
socket.on('close', () => $this.emit('close'));
|
|
77
|
-
await $this.#connect(socket);
|
|
78
|
-
return $this;
|
|
79
|
-
}
|
|
80
|
-
async write(data) {
|
|
81
|
-
const msg = JSON.stringify(data) + StableTCP.#separator;
|
|
82
|
-
const buffer = Buffer.from(msg);
|
|
83
|
-
this.#input.write(buffer);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
7
|
+
const SEEDING_IP_RANGES = process.env.SEEDING_IP_RANGE;
|
|
8
|
+
const SEEDING_IPS = process.env.SEEDING_IP;
|
|
86
9
|
export class BuiltinTransporter {
|
|
87
10
|
node_id;
|
|
88
11
|
namespace;
|
|
89
|
-
|
|
90
|
-
#node_online_callbacks = new Map;
|
|
91
|
-
#listeners = new Map;
|
|
12
|
+
$nodes_status = new Subject();
|
|
92
13
|
#version = Date.now();
|
|
14
|
+
#listeners = new Map;
|
|
93
15
|
#nodes_map = new Map;
|
|
94
16
|
#events_map = new Map();
|
|
95
|
-
|
|
96
|
-
constructor(node_id, namespace) {
|
|
17
|
+
#$rebroadcast = new Subject();
|
|
18
|
+
constructor(node_id, namespace = 'default') {
|
|
97
19
|
this.node_id = node_id;
|
|
98
20
|
this.namespace = namespace;
|
|
99
|
-
process.env.SPIDERMESH_DEBUG && console.log(`[${new Date().toLocaleTimeString()}] Online ${node_id}:${UDP_PORT}`);
|
|
100
|
-
setTimeout(async () => {
|
|
101
|
-
while (true) {
|
|
102
|
-
this.#initing = this.#init();
|
|
103
|
-
const task = await this.#initing;
|
|
104
|
-
await task.next();
|
|
105
|
-
await task.wait_error();
|
|
106
|
-
await task.flush();
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
21
|
}
|
|
110
|
-
async
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
try {
|
|
119
|
-
const json = JSON.parse(raw.toString('utf-8'));
|
|
120
|
-
this.#on_message(rinfo.address, json);
|
|
121
|
-
}
|
|
122
|
-
catch (e) {
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
// Find free port
|
|
126
|
-
const { tcp_port, server } = await new Promise(async (s) => {
|
|
127
|
-
for (let tcp_port = 10001; true; tcp_port++) {
|
|
128
|
-
const server = createServer();
|
|
129
|
-
server.listen(tcp_port);
|
|
130
|
-
const success = await new Promise(s => {
|
|
131
|
-
server.on('listening', () => s(true));
|
|
132
|
-
server.on('error', () => s(false));
|
|
133
|
-
});
|
|
134
|
-
if (success)
|
|
135
|
-
return s({ tcp_port, server });
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
server.on('connection', async (socket) => {
|
|
139
|
-
const remote_host = socket.remoteAddress?.split(':')?.pop();
|
|
140
|
-
if (remote_host) {
|
|
141
|
-
const stable_tcp = await StableTCP.join(socket);
|
|
142
|
-
stable_tcp.on('data', data => this.#on_message(remote_host, data, stable_tcp));
|
|
143
|
-
}
|
|
22
|
+
async start() {
|
|
23
|
+
const $tcp_server = await RxjsTcpServer.start();
|
|
24
|
+
const udp_broadcaster = await RxjsUdpBroadcaster.start({
|
|
25
|
+
namespace: this.namespace,
|
|
26
|
+
node_id: this.node_id,
|
|
27
|
+
SEEDING_IP_RANGES,
|
|
28
|
+
SEEDING_IPS,
|
|
29
|
+
UDP_PORT
|
|
144
30
|
});
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
!current_ips.includes(host) && broadcast_ips.push(host);
|
|
31
|
+
$tcp_server.subscribe(({ port, $connection, $error }) => {
|
|
32
|
+
merge($connection, udp_broadcaster.$new_node_discovered.pipe(mergeMap(node => RxjsTcpSocket.connect({
|
|
33
|
+
...node,
|
|
34
|
+
keepAlive: true
|
|
35
|
+
})), filter(Boolean), map(socket => Object.assign(socket, { udp: true })))).pipe(takeUntil($error), map(socket => {
|
|
36
|
+
socket.$incoming_data
|
|
37
|
+
.pipe(filter(msg => !!msg), filter(msg => msg.sender_node_id != this.node_id), filter(msg => msg.namespace == this.namespace))
|
|
38
|
+
.subscribe(async (msg) => {
|
|
39
|
+
if (msg.topic == `#hello`) {
|
|
40
|
+
const status = await this.#add_node(socket, msg.data);
|
|
41
|
+
status && !status.peer_updated && this.#tcp_hello(status.socket, port);
|
|
42
|
+
return;
|
|
158
43
|
}
|
|
159
|
-
|
|
160
|
-
// Hello via UDP
|
|
161
|
-
broadcast_ips.forEach(host => {
|
|
162
|
-
this.#hello(undefined, { host, socket: udp });
|
|
44
|
+
this.#listeners.get(msg.topic)?.forEach(cb => cb(msg.sender_node_id, msg.data));
|
|
163
45
|
});
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
46
|
+
'udp' in socket && this.#tcp_hello(socket, port);
|
|
47
|
+
})).subscribe();
|
|
48
|
+
udp_broadcaster.broadcast(port);
|
|
49
|
+
this.#$rebroadcast.pipe(debounceTime(1000), takeUntil($error), map(() => [...this.#nodes_map.values()]), mergeAll(), mergeMap(node => this.#tcp_hello(node.socket, port))).subscribe();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async #add_node(node_socket, new_node) {
|
|
53
|
+
const host = node_socket.rawSocket.remoteAddress;
|
|
54
|
+
if (!host)
|
|
55
|
+
return;
|
|
56
|
+
// process.env.SPIDERMESH_DEBUG && console.log(`[${new Date().toLocaleTimeString()}] [TCP] Node online [${host}]`, new_node)
|
|
57
|
+
const new_node_id = new_node.node_id;
|
|
58
|
+
if (!this.#nodes_map.has(new_node_id)) {
|
|
59
|
+
const socket = node_socket.opened_by_remote_side ? (await RxjsTcpSocket.connect({
|
|
60
|
+
host,
|
|
61
|
+
port: new_node.port,
|
|
62
|
+
keepAlive: true
|
|
63
|
+
}) || node_socket) : node_socket;
|
|
64
|
+
// When ofline
|
|
65
|
+
socket.$status.pipe(filter(status => status == 'closed' || status == 'error'), first()).subscribe(() => {
|
|
66
|
+
// process.env.SPIDERMESH_DEBUG && console.log(`[${new Date().toLocaleTimeString()}] [TCP] Node offline ${new_node_id}`)
|
|
67
|
+
const node = this.#nodes_map.get(new_node_id);
|
|
68
|
+
node && node.listening.map(evt => {
|
|
69
|
+
this.#events_map.get(evt)?.delete(node.node_id);
|
|
183
70
|
});
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
71
|
+
this.#nodes_map.delete(new_node_id);
|
|
72
|
+
this.$nodes_status.next({ node_id: new_node_id, online: false });
|
|
73
|
+
});
|
|
74
|
+
// Add to map
|
|
75
|
+
this.#nodes_map.set(new_node_id, { ...new_node, host, socket });
|
|
76
|
+
}
|
|
77
|
+
const remote_info = new_node.peers.find(p => p.node_id == this.node_id);
|
|
78
|
+
const peer_updated = remote_info && remote_info.version == this.#version;
|
|
79
|
+
for (const event of new_node.listening) {
|
|
80
|
+
!this.#events_map.has(event) && this.#events_map.set(event, new Set());
|
|
81
|
+
this.#events_map.get(event)?.add(new_node_id);
|
|
82
|
+
}
|
|
83
|
+
peer_updated && this.$nodes_status.next({ node_id: new_node_id, online: true });
|
|
84
|
+
return {
|
|
85
|
+
peer_updated,
|
|
86
|
+
socket: this.#nodes_map.get(new_node_id).socket
|
|
189
87
|
};
|
|
190
88
|
}
|
|
191
|
-
async #
|
|
192
|
-
const { tcp_port } = await this.#initing;
|
|
89
|
+
async #tcp_hello(tcp_socket, self_tcp_port) {
|
|
193
90
|
const msg = {
|
|
194
91
|
data: {
|
|
195
92
|
node_id: this.node_id,
|
|
196
|
-
port:
|
|
197
|
-
|
|
198
|
-
peers: [...this.#nodes_map.values()].map(({
|
|
93
|
+
port: self_tcp_port,
|
|
94
|
+
listening: ['#hello', ...this.#listeners.keys()],
|
|
95
|
+
peers: [...this.#nodes_map.values()].map(({ socket, ...node }) => node),
|
|
199
96
|
version: this.#version
|
|
200
97
|
},
|
|
201
98
|
namespace: this.namespace,
|
|
202
99
|
sender_node_id: this.node_id,
|
|
203
100
|
topic: '#hello'
|
|
204
101
|
};
|
|
205
|
-
|
|
206
|
-
socket?.write(msg);
|
|
207
|
-
}
|
|
208
|
-
if (udp_socket) {
|
|
209
|
-
const buffer = Buffer.from(JSON.stringify(msg), 'utf8');
|
|
210
|
-
udp_socket?.socket.send(buffer, UDP_PORT, udp_socket.host);
|
|
211
|
-
}
|
|
102
|
+
tcp_socket.write(msg);
|
|
212
103
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
this.#listeners.get(msg.topic)?.forEach(cb => cb(msg.sender_node_id, msg.data));
|
|
225
|
-
}
|
|
226
|
-
async #add_node(host, new_node, tcp_socket) {
|
|
227
|
-
process.env.SPIDERMESH_DEBUG && console.log(`[${new Date().toLocaleTimeString()}] [TCP] Node online [${host}]`, new_node);
|
|
228
|
-
const remote_info = new_node.peers.find(p => p.node_id == this.node_id);
|
|
229
|
-
const peer_updated = remote_info && remote_info.version == this.#version;
|
|
230
|
-
if (!this.#nodes_map.get(new_node.node_id)?.socket) {
|
|
231
|
-
const socket = await StableTCP.init({ host, port: new_node.port, keepAlive: true, timeout: 5000 }) || tcp_socket;
|
|
232
|
-
if (!socket)
|
|
233
|
-
return;
|
|
234
|
-
const on_offline = (e) => {
|
|
235
|
-
process.env.SPIDERMESH_DEBUG && console.log(`[${new Date().toLocaleTimeString()}] [TCP] Node offline ${new_node.node_id}`);
|
|
236
|
-
this.#node_offline_callbacks?.forEach(cb => cb(new_node.node_id));
|
|
237
|
-
const node = this.#nodes_map.get(new_node.node_id);
|
|
238
|
-
node && node.listening_events.map(evt => {
|
|
239
|
-
this.#events_map.get(evt)?.delete(node.node_id);
|
|
240
|
-
});
|
|
241
|
-
this.#nodes_map.delete(new_node.node_id);
|
|
242
|
-
};
|
|
243
|
-
socket.on('error', on_offline);
|
|
244
|
-
socket.on('close', on_offline);
|
|
245
|
-
this.#nodes_map.set(new_node.node_id, { ...new_node, host, socket });
|
|
246
|
-
!peer_updated && await this.#hello(socket);
|
|
247
|
-
}
|
|
248
|
-
for (const event of new_node.listening_events) {
|
|
249
|
-
!this.#events_map.has(event) && this.#events_map.set(event, new Set());
|
|
250
|
-
this.#events_map.get(event)?.add(new_node.node_id);
|
|
251
|
-
}
|
|
252
|
-
remote_info && this.#node_online_callbacks.forEach(fn => fn(new_node.node_id));
|
|
253
|
-
}
|
|
254
|
-
on_node_offline(cb) {
|
|
255
|
-
const id = randomUUID();
|
|
256
|
-
this.#node_offline_callbacks.set(id, cb);
|
|
257
|
-
return { unsubscribe: () => this.#node_offline_callbacks.delete(id) };
|
|
258
|
-
}
|
|
259
|
-
on_node_online(cb) {
|
|
260
|
-
const id = randomUUID();
|
|
261
|
-
this.#node_online_callbacks.set(id, cb);
|
|
262
|
-
return { unsubscribe: () => this.#node_online_callbacks.delete(id) };
|
|
263
|
-
}
|
|
264
|
-
#broadcast_listen;
|
|
265
|
-
listen(topic, cb) {
|
|
266
|
-
this.#version = Date.now();
|
|
267
|
-
this.#broadcast_listen && clearTimeout(this.#broadcast_listen);
|
|
268
|
-
this.#broadcast_listen = setTimeout(() => {
|
|
269
|
-
// Notify about update
|
|
270
|
-
this.#nodes_map.forEach(node => this.#hello(node.socket));
|
|
271
|
-
}, 1000);
|
|
272
|
-
!this.#listeners.has(topic) && this.#listeners.set(topic, new Map());
|
|
273
|
-
const id = randomUUID();
|
|
274
|
-
this.#listeners.get(topic)?.set(id, cb);
|
|
275
|
-
return {
|
|
276
|
-
unsubscribe: () => {
|
|
104
|
+
listen(topic) {
|
|
105
|
+
return new Observable(o => {
|
|
106
|
+
this.#version = Date.now();
|
|
107
|
+
!this.#listeners.has(topic) && this.#listeners.set(topic, new Map());
|
|
108
|
+
const id = randomUUID();
|
|
109
|
+
this.#listeners.get(topic)?.set(id, (sender_node_id, data) => o.next({
|
|
110
|
+
sender_node_id,
|
|
111
|
+
data
|
|
112
|
+
}));
|
|
113
|
+
this.#$rebroadcast.next();
|
|
114
|
+
return () => {
|
|
277
115
|
this.#version = Date.now();
|
|
278
116
|
this.#listeners.get(topic)?.delete(id);
|
|
279
117
|
this.#listeners.get(topic)?.size == 0 && this.#listeners.delete(topic);
|
|
280
|
-
}
|
|
281
|
-
};
|
|
118
|
+
};
|
|
119
|
+
});
|
|
282
120
|
}
|
|
283
|
-
async publish(event, node_id
|
|
121
|
+
async publish({ data, event, node_id }) {
|
|
284
122
|
const msg = {
|
|
285
123
|
data,
|
|
286
124
|
namespace: this.namespace,
|
|
287
125
|
sender_node_id: this.node_id,
|
|
288
126
|
topic: event || node_id || '#'
|
|
289
127
|
};
|
|
290
|
-
if (node_id) {
|
|
291
|
-
const
|
|
292
|
-
|
|
128
|
+
if (node_id == 'all' || !node_id) {
|
|
129
|
+
for (const node_id of this.#events_map.get(event) || []) {
|
|
130
|
+
const node = this.#nodes_map.get(node_id);
|
|
131
|
+
await node?.peers.find(p => p.node_id == this.node_id) && node?.socket?.write(msg);
|
|
132
|
+
}
|
|
293
133
|
return;
|
|
294
134
|
}
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
135
|
+
// if (node_id == 'rr') {
|
|
136
|
+
// const key = `${event}.${routing_key || 'default'}`
|
|
137
|
+
// const nodes = [... this.#events_map.get(event) || []]
|
|
138
|
+
// const current_index = (this.#round_robin_indexes.get(key) || 0) % nodes.length
|
|
139
|
+
// this.#round_robin_indexes.set(key, current_index + 1)
|
|
140
|
+
// const node_id = nodes[current_index]
|
|
141
|
+
// await this.#nodes_map.get(node_id)?.socket?.write(msg)
|
|
142
|
+
// return
|
|
143
|
+
// }
|
|
144
|
+
// p2p
|
|
145
|
+
node_id && await this.#nodes_map.get(node_id)?.socket?.write(msg);
|
|
299
146
|
}
|
|
300
147
|
}
|
|
301
148
|
//# sourceMappingURL=BuiltinTransporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltinTransporter.js","sourceRoot":"","sources":["../../src/BuiltinTransporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BuiltinTransporter.js","sourceRoot":"","sources":["../../src/BuiltinTransporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
1
2
|
import { RPCOptions } from "./RPCOptions";
|
|
2
3
|
import { SpiderMeshNode } from "./SpiderMeshNode";
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
export type RemoteService<T = {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}> = ({
|
|
5
7
|
[K in keyof T as (T[K] extends (...args: any) => any ? K : '')]: T[K] extends (...args: any) => any ? ((...args: Parameters<T[K]>) => Promise<Awaited<ReturnType<T[K]>>>) : null;
|
|
6
8
|
} & {
|
|
7
9
|
[key in keyof RPCOptions as `$set_${key}`]: (value: RPCOptions[key]) => RemoteService<T>;
|
|
8
10
|
} & {
|
|
9
11
|
$list_nodes: () => SpiderMeshNode[];
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
} & {
|
|
13
|
+
[key in keyof T as (key extends string ? `$batch_${key}` : string)]: T[key] extends ((...args: any) => any) ? ((...args: Parameters<T[key]>) => Observable<{
|
|
14
|
+
node: SpiderMeshNode;
|
|
15
|
+
data: Awaited<ReturnType<T[key]>>;
|
|
16
|
+
}>) : T[key];
|
|
17
|
+
} & {
|
|
18
|
+
$wait_service_online: () => Promise<void>;
|
|
14
19
|
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Subject } from "rxjs";
|
|
2
|
+
import { RxjsTcpSocket } from "./RxjsTcpSocket";
|
|
3
|
+
export declare class RxjsTcpServer {
|
|
4
|
+
static start<T = object>(start_port?: number): Subject<{
|
|
5
|
+
port: number;
|
|
6
|
+
$connection: Subject<RxjsTcpSocket<T>>;
|
|
7
|
+
$error: Promise<Error>;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createServer } from "net";
|
|
2
|
+
import { Subject } from "rxjs";
|
|
3
|
+
import { RxjsTcpSocket } from "./RxjsTcpSocket";
|
|
4
|
+
export class RxjsTcpServer {
|
|
5
|
+
static start(start_port = 10001) {
|
|
6
|
+
const $online = new Subject();
|
|
7
|
+
setTimeout(async () => {
|
|
8
|
+
for (let port = start_port; true; port++) {
|
|
9
|
+
const $connection = new Subject();
|
|
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(port);
|
|
15
|
+
});
|
|
16
|
+
if (!success)
|
|
17
|
+
continue;
|
|
18
|
+
server.on('connection', async (socket) => {
|
|
19
|
+
const stable_socket = await RxjsTcpSocket.join(socket);
|
|
20
|
+
$connection.next(stable_socket);
|
|
21
|
+
});
|
|
22
|
+
const $error = new Promise(s => server.once('error', s));
|
|
23
|
+
$online.next({ port, $connection, $error });
|
|
24
|
+
await $error;
|
|
25
|
+
server.removeAllListeners();
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return $online;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=RxjsTcpServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RxjsTcpServer.js","sourceRoot":"","sources":["../../src/RxjsTcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,MAAM,OAAO,aAAa;IAGtB,MAAM,CAAC,KAAK,CAAa,aAAqB,KAAK;QAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAIvB,CAAA;QAGJ,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,KAAK,IAAI,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBACtC,MAAM,WAAW,GAAG,IAAI,OAAO,EAAoB,CAAA;gBACnD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;gBAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,CAAC,EAAE;oBAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;oBACvC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;oBACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACvB,CAAC,CAAC,CAAA;gBACF,IAAI,CAAC,OAAO;oBAAE,SAAQ;gBACtB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;oBACnC,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAI,MAAM,CAAC,CAAA;oBACzD,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;gBACF,MAAM,MAAM,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC3C,MAAM,MAAM,CAAA;gBACZ,MAAM,CAAC,kBAAkB,EAAE,CAAA;aAC9B;QACL,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IAClB,CAAC;CAEJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { TcpNetConnectOpts, Socket } from "net";
|
|
3
|
+
import { BehaviorSubject, Subject } from "rxjs";
|
|
4
|
+
export declare class RxjsTcpSocket<T = any> {
|
|
5
|
+
#private;
|
|
6
|
+
readonly opened_by_remote_side: boolean;
|
|
7
|
+
$incoming_data: Subject<T>;
|
|
8
|
+
$status: BehaviorSubject<"connecting" | "ready" | "closed" | "error">;
|
|
9
|
+
rawSocket: Socket;
|
|
10
|
+
constructor(opened_by_remote_side: boolean);
|
|
11
|
+
static connect<T = any>(options: TcpNetConnectOpts): Promise<RxjsTcpSocket<T> | null>;
|
|
12
|
+
static join<T = any>(socket: Socket): Promise<RxjsTcpSocket<T>>;
|
|
13
|
+
write(data: T): Promise<void>;
|
|
14
|
+
}
|