iosignal 3.0.1 → 3.2.0
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/{docs/README.ko.md → README.ko.md} +204 -9
- package/README.md +424 -8
- package/dist/io.js +1 -1
- package/dist/io.js.map +1 -1
- package/dist/io.min.js +1 -1
- package/dist/io.min.js.map +1 -1
- package/dist/iosignal.js +131 -29
- package/examples/react-chat-js/package-lock.json +311 -216
- package/examples/react-chat-js/package.json +6 -6
- package/examples/react-chat-js/src/App.jsx +4 -4
- package/examples/server/package-lock.json +47 -0
- package/examples/svelte-chat-js/.devtools +3 -0
- package/examples/svelte-chat-js/README.md +38 -0
- package/examples/svelte-chat-js/package-lock.json +1505 -0
- package/examples/svelte-chat-js/package.json +22 -0
- package/examples/svelte-chat-js/src/app.css +105 -0
- package/examples/svelte-chat-js/src/app.d.ts +13 -0
- package/examples/svelte-chat-js/src/app.html +12 -0
- package/examples/svelte-chat-js/src/lib/images/github.svg +1 -0
- package/examples/svelte-chat-js/src/lib/images/svelte-logo.svg +1 -0
- package/examples/svelte-chat-js/src/lib/images/svelte-welcome.png +0 -0
- package/examples/svelte-chat-js/src/lib/images/svelte-welcome.webp +0 -0
- package/examples/svelte-chat-js/src/lib/shared_io.js +12 -0
- package/examples/svelte-chat-js/src/routes/+layout.svelte +9 -0
- package/examples/svelte-chat-js/src/routes/+page.js +3 -0
- package/examples/svelte-chat-js/src/routes/+page.svelte +162 -0
- package/examples/svelte-chat-js/static/favicon.svg +1 -0
- package/examples/svelte-chat-js/static/global.css +19 -0
- package/examples/svelte-chat-js/static/robots.txt +3 -0
- package/examples/svelte-chat-js/svelte.config.js +15 -0
- package/examples/svelte-chat-js/vite.config.js +6 -0
- package/index.js +2 -1
- package/package.json +1 -1
- package/src/client/IOCore.js +18 -5
- package/src/client/browser/IOWebSocket.js +1 -16
- package/src/server/Manager.js +16 -0
- package/src/server/Remote.js +5 -0
- package/src/server/Server.js +85 -21
- package/src/server/serverOption.js +2 -2
- package/test-nodejs/client-playToggle.js +19 -0
package/src/server/Server.js
CHANGED
|
@@ -11,6 +11,8 @@ export class Server extends EventEmitter {
|
|
|
11
11
|
super();
|
|
12
12
|
this.apiNames = new Set()
|
|
13
13
|
this.wss = {};
|
|
14
|
+
this.port = null;
|
|
15
|
+
this.congPort = null;
|
|
14
16
|
|
|
15
17
|
if (options.timeout) {
|
|
16
18
|
let pingT = parseInt(options.timeout)
|
|
@@ -31,38 +33,44 @@ export class Server extends EventEmitter {
|
|
|
31
33
|
serverOption.showMetric = options.showMetric
|
|
32
34
|
}
|
|
33
35
|
|
|
34
|
-
if (options.
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (options.port) {
|
|
39
|
-
serverOption.port = parseInt(options.port)
|
|
36
|
+
if (options.port || options.port == 0) {
|
|
37
|
+
this.port = parseInt(options.port)
|
|
40
38
|
}
|
|
41
39
|
|
|
42
40
|
if (options.httpServer) {
|
|
43
|
-
|
|
41
|
+
this.httpServer = options.httpServer
|
|
44
42
|
}
|
|
45
43
|
|
|
46
|
-
if (options.congPort) {
|
|
47
|
-
|
|
44
|
+
if (options.congPort || options.congPort == 0) {
|
|
45
|
+
this.congPort = parseInt(options.congPort)
|
|
48
46
|
}
|
|
49
47
|
|
|
50
48
|
this.manager = new Manager(this, authManager)
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
this.serverCountToListen = 0;
|
|
51
|
+
this.listeningServerCount = 0;
|
|
52
|
+
if (this.port || this.port == 0 || this.httpServer) this.serverCountToListen++;
|
|
53
|
+
if (this.congPort || this.congPort == 0) this.serverCountToListen++;
|
|
54
|
+
|
|
55
|
+
if (this.serverCountToListen === 0) {
|
|
56
|
+
process.nextTick(() => this.emit('ready'));
|
|
57
|
+
} else {
|
|
58
|
+
if (this.port || this.port == 0 || this.httpServer) this.startWSServer();
|
|
59
|
+
if (this.congPort || this.congPort == 0) this.startCongServer();
|
|
60
|
+
}
|
|
54
61
|
|
|
55
62
|
}
|
|
56
63
|
|
|
57
64
|
|
|
58
|
-
startWSServer(
|
|
65
|
+
startWSServer() {
|
|
59
66
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
// console.log('optoins', options )
|
|
68
|
+
if (this.port || this.port == 0) {
|
|
69
|
+
console.log('opening WebSocket Server port:', this.port)
|
|
70
|
+
this.wss = new WebSocketServer({ port: this.port })
|
|
71
|
+
} else if (this.httpServer) {
|
|
64
72
|
console.log('opening WebSocket Server external httpServer:')
|
|
65
|
-
this.wss = new WebSocketServer({ server:
|
|
73
|
+
this.wss = new WebSocketServer({ server: this.httpServer })
|
|
66
74
|
} else {
|
|
67
75
|
throw new TypeError(
|
|
68
76
|
'One and only one of the "port", "httpServer"' +
|
|
@@ -71,6 +79,15 @@ export class Server extends EventEmitter {
|
|
|
71
79
|
}
|
|
72
80
|
|
|
73
81
|
|
|
82
|
+
this.wss.once('listening', () => {
|
|
83
|
+
this.port = this.wss.address().port;
|
|
84
|
+
console.log('wss server bound port:', this.port );
|
|
85
|
+
this.listeningServerCount++;
|
|
86
|
+
if (this.listeningServerCount === this.serverCountToListen) {
|
|
87
|
+
this.emit('ready');
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
74
91
|
// this.wss.setMaxListeners(0)
|
|
75
92
|
|
|
76
93
|
this.wss.on('error', (err) => {
|
|
@@ -92,8 +109,8 @@ export class Server extends EventEmitter {
|
|
|
92
109
|
|
|
93
110
|
}
|
|
94
111
|
|
|
95
|
-
startCongServer(
|
|
96
|
-
console.log('opening CongSocket Server:', congPort)
|
|
112
|
+
startCongServer() {
|
|
113
|
+
console.log('opening CongSocket Server port:', this.congPort)
|
|
97
114
|
|
|
98
115
|
this.congServer = net.createServer((socket) => {
|
|
99
116
|
this.manager.addRemote(socket)
|
|
@@ -103,8 +120,15 @@ export class Server extends EventEmitter {
|
|
|
103
120
|
if (err.code == 'EADDRINUSE') {
|
|
104
121
|
process.exit()
|
|
105
122
|
}
|
|
106
|
-
}).
|
|
107
|
-
|
|
123
|
+
}).on('close', () => {
|
|
124
|
+
console.log('### cong server closed.')
|
|
125
|
+
}).listen(this.congPort, () => {
|
|
126
|
+
this.congPort = this.congServer.address().port;
|
|
127
|
+
console.log('congsocket server bound port:', this.congPort );
|
|
128
|
+
this.listeningServerCount++;
|
|
129
|
+
if (this.listeningServerCount === this.serverCountToListen) {
|
|
130
|
+
this.emit('ready');
|
|
131
|
+
}
|
|
108
132
|
});
|
|
109
133
|
}
|
|
110
134
|
|
|
@@ -160,4 +184,44 @@ export class Server extends EventEmitter {
|
|
|
160
184
|
return this
|
|
161
185
|
}
|
|
162
186
|
|
|
187
|
+
close(callback) {
|
|
188
|
+
console.log('closing io-signal server...')
|
|
189
|
+
if (this.manager) {
|
|
190
|
+
this.manager.close()
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
let serverCount = 0;
|
|
194
|
+
if (this.wss) serverCount++;
|
|
195
|
+
if (this.congServer) serverCount++;
|
|
196
|
+
|
|
197
|
+
if (serverCount === 0) {
|
|
198
|
+
if (callback) process.nextTick(callback);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
let closedCount = 0;
|
|
203
|
+
const onClosed = () => {
|
|
204
|
+
closedCount++;
|
|
205
|
+
if (closedCount === serverCount) {
|
|
206
|
+
console.log('io-signal server closed.')
|
|
207
|
+
if (callback) callback();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (this.wss) {
|
|
212
|
+
this.wss.close(() => {
|
|
213
|
+
console.log('wss server closed.')
|
|
214
|
+
onClosed()
|
|
215
|
+
})
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (this.congServer) {
|
|
219
|
+
this.congServer.close((err) => {
|
|
220
|
+
if (err) console.error('congServer close error', err)
|
|
221
|
+
console.log('cong server closed.')
|
|
222
|
+
onClosed()
|
|
223
|
+
})
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
163
227
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
import { IO } from "iosignal"
|
|
3
|
+
|
|
4
|
+
const io = new IO('wss://io.iosignal.net/ws')
|
|
5
|
+
|
|
6
|
+
// io.auth('id','key')
|
|
7
|
+
|
|
8
|
+
io.on('ready', () => {
|
|
9
|
+
console.log('ready cid:', io.cid)
|
|
10
|
+
io.signal('#screen', 'playToggle')
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
io.listen('#notify', (...args) => {
|
|
14
|
+
console.log(args)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
io.on('error', err => {
|
|
18
|
+
console.log('err', err)
|
|
19
|
+
})
|