node-datachannel 0.5.5 → 0.6.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/.github/workflows/build-linux.yml +2 -2
- package/CMakeLists.txt +6 -10
- package/examples/electron-demo/package-lock.json +6 -6
- package/examples/media/README.md +12 -0
- package/lib/index.d.ts +66 -1
- package/lib/index.js +4 -0
- package/package.json +3 -2
- package/src/main.cpp +4 -0
- package/src/rtc-wrapper.cpp +4 -0
- package/src/web-socket-server-wrapper.cpp +265 -0
- package/src/web-socket-server-wrapper.h +43 -0
- package/src/web-socket-wrapper.cpp +651 -0
- package/src/web-socket-wrapper.h +58 -0
- package/test/test.js +67 -0
- package/test/websockets.js +48 -0
package/test/test.js
CHANGED
|
@@ -179,6 +179,73 @@ describe('DataChannel streams', () => {
|
|
|
179
179
|
});
|
|
180
180
|
});
|
|
181
181
|
|
|
182
|
+
describe('Websocket', () => {
|
|
183
|
+
const webSocketServer = new nodeDataChannel.WebSocketServer({ bindAddress: '127.0.0.1', port: 1987 });
|
|
184
|
+
const clientSocket = new nodeDataChannel.WebSocket();
|
|
185
|
+
|
|
186
|
+
// Mocks
|
|
187
|
+
const clientOnOpenMock = jest.fn();
|
|
188
|
+
const clientOnMessageMock = jest.fn();
|
|
189
|
+
const clientOnCLosedMock = jest.fn();
|
|
190
|
+
|
|
191
|
+
const webServerOnClientMock = jest.fn();
|
|
192
|
+
const webServerOnOpenMock = jest.fn();
|
|
193
|
+
const webServerOnMessageMock = jest.fn();
|
|
194
|
+
const webServerOnClosedMock = jest.fn();
|
|
195
|
+
|
|
196
|
+
webSocketServer.onClient((serverSocket) => {
|
|
197
|
+
webServerOnClientMock();
|
|
198
|
+
|
|
199
|
+
serverSocket.onOpen(() => {
|
|
200
|
+
webServerOnOpenMock();
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
serverSocket.onMessage((message) => {
|
|
204
|
+
webServerOnMessageMock(message);
|
|
205
|
+
serverSocket.sendMessage('reply to ' + message);
|
|
206
|
+
serverSocket.close();
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
serverSocket.onClosed(() => {
|
|
210
|
+
webServerOnClosedMock();
|
|
211
|
+
serverSocket.close();
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
test('can create a websocket client and connect to a server', (done) => {
|
|
216
|
+
clientSocket.open('ws://127.0.0.1:1987');
|
|
217
|
+
clientSocket.onOpen(() => {
|
|
218
|
+
clientOnOpenMock();
|
|
219
|
+
clientSocket.sendMessage('Hello');
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
clientSocket.onMessage((message) => {
|
|
223
|
+
clientOnMessageMock(message);
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
clientSocket.onClosed(() => {
|
|
227
|
+
clientOnCLosedMock();
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
setTimeout(() => {
|
|
231
|
+
expect(clientOnMessageMock.mock.calls[0][0]).toEqual('reply to Hello');
|
|
232
|
+
expect(clientOnOpenMock.mock.calls.length).toBe(1);
|
|
233
|
+
expect(clientOnMessageMock.mock.calls.length).toBe(1);
|
|
234
|
+
expect(clientOnCLosedMock.mock.calls.length).toBe(1);
|
|
235
|
+
|
|
236
|
+
expect(webServerOnMessageMock.mock.calls[0][0]).toEqual('Hello');
|
|
237
|
+
expect(webServerOnOpenMock.mock.calls.length).toBe(1);
|
|
238
|
+
expect(webServerOnMessageMock.mock.calls.length).toBe(1);
|
|
239
|
+
expect(webServerOnClosedMock.mock.calls.length).toBe(0);
|
|
240
|
+
|
|
241
|
+
clientSocket.close();
|
|
242
|
+
webSocketServer.stop();
|
|
243
|
+
|
|
244
|
+
done();
|
|
245
|
+
}, 3000);
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
|
|
182
249
|
afterAll(() => {
|
|
183
250
|
// Properly cleanup so Jest does not complain about asynchronous operations that weren't stopped.
|
|
184
251
|
nodeDataChannel.cleanup();
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import nodeDataChannel from '../lib/index.js';
|
|
2
|
+
|
|
3
|
+
nodeDataChannel.initLogger('Debug');
|
|
4
|
+
nodeDataChannel.preload();
|
|
5
|
+
|
|
6
|
+
const webSocketServer = new nodeDataChannel.WebSocketServer({ bindAddress: '127.0.0.1', port: 1987 });
|
|
7
|
+
|
|
8
|
+
webSocketServer.onClient((serverSocket) => {
|
|
9
|
+
console.log('webSocketServer.onClient()');
|
|
10
|
+
|
|
11
|
+
serverSocket.onOpen(() => {
|
|
12
|
+
console.log('serverSocket.onOpen()');
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
serverSocket.onMessage((message) => {
|
|
16
|
+
console.log('serverSocket.onMessage():', message);
|
|
17
|
+
serverSocket.sendMessage('reply to ' + message);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
serverSocket.onClosed(() => {
|
|
21
|
+
console.log('serverSocket.onClosed()');
|
|
22
|
+
serverSocket.close();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const clientSocket = new nodeDataChannel.WebSocket();
|
|
27
|
+
|
|
28
|
+
clientSocket.onOpen(() => {
|
|
29
|
+
console.log('clientSocket.onOpen()');
|
|
30
|
+
clientSocket.sendMessage('Hello');
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
clientSocket.onMessage((message) => {
|
|
34
|
+
console.log('clientSocket.onMessage():', message);
|
|
35
|
+
clientSocket.close();
|
|
36
|
+
webSocketServer.stop();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
clientSocket.onClosed(() => {
|
|
40
|
+
console.log('clientSocket.onClosed()');
|
|
41
|
+
clientSocket.close();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
clientSocket.open('ws://127.0.0.1:1987');
|
|
45
|
+
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
nodeDataChannel.cleanup();
|
|
48
|
+
}, 1000);
|