Skip to content

Commit 94c9122

Browse files
committed
Add SCTP support and update test scripts in import-test
1 parent 79ef4e7 commit 94c9122

File tree

5 files changed

+92
-43
lines changed

5 files changed

+92
-43
lines changed

import-test/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
"main": "index.js",
66
"type": "module",
77
"scripts": {
8-
"test": "cd ../packages/webrtc && npm run build && cd ../../ && npm i && cd import-test && node test.mjs"
8+
"test": "cd ../packages/webrtc && npm run build && cd ../sctp && npm run build && cd ../../ && npm i && cd import-test && node test.mjs"
99
},
1010
"keywords": [],
1111
"author": "",
1212
"license": "ISC",
1313
"dependencies": {
1414
"werift": "0.22.7",
15-
"werift-dev": "file:../packages/webrtc"
15+
"werift-dev": "file:../packages/webrtc",
16+
"werift-sctp": "file:../packages/sctp"
1617
}
1718
}

import-test/sctp.mjs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { createSocket } from "dgram";
2+
import { SCTP, WEBRTC_PPID, createUdpTransport } from "werift-sctp";
3+
4+
const port = 5555;
5+
6+
const socket = createSocket("udp4");
7+
socket.bind(port);
8+
9+
const server = SCTP.server(createUdpTransport(socket));
10+
server.onReceive.subscribe((streamId, ppId, data) => {
11+
console.log(data.toString());
12+
server.send(0, WEBRTC_PPID.STRING, Buffer.from("pong"));
13+
});
14+
15+
const client = SCTP.client(
16+
createUdpTransport(createSocket("udp4"), {
17+
port,
18+
address: "127.0.0.1",
19+
})
20+
);
21+
const promise = new Promise(r => {
22+
client.onReceive.subscribe((streamId, ppId, data) => {
23+
console.log(data.toString());
24+
r();
25+
});
26+
})
27+
28+
await Promise.all([client.start(5000), server.start(5000)]);
29+
await Promise.all([
30+
client.stateChanged.connected.asPromise(),
31+
server.stateChanged.connected.asPromise(),
32+
]);
33+
34+
client.send(0, WEBRTC_PPID.STRING, Buffer.from("ping"));
35+
36+
await promise;
37+
38+
await server.stop();
39+
await client.stop();
40+
server.transport.close();
41+
client.transport.close();
42+
43+
console.log("sctp done");

import-test/test.mjs

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,2 @@
1-
import { equal } from 'node:assert';
2-
import { RTCPeerConnection } from 'werift-dev';
3-
4-
const pcA = new RTCPeerConnection();
5-
const pcB = new RTCPeerConnection();
6-
7-
8-
const dcA = pcA.createDataChannel("test");
9-
const dcBPromise = new Promise((resolve) => {
10-
pcB.ondatachannel = (event) => {
11-
console.log("data channel event");
12-
resolve(event.channel);
13-
};
14-
});
15-
16-
17-
const offer = await pcA.createOffer();
18-
await pcB.setRemoteDescription(await pcA.setLocalDescription(offer));
19-
console.log("offer set");
20-
21-
const answer = await pcB.createAnswer();
22-
await pcA.setRemoteDescription(await pcB.setLocalDescription(answer));
23-
console.log("answer set");
24-
25-
const dcB = await dcBPromise;
26-
console.log("data channel created");
27-
28-
const message = "Hello, World!";
29-
setImmediate(() => {
30-
dcA.send(message);
31-
});
32-
33-
const [msg] = await dcB.onMessage.asPromise()
34-
console.log("message received:", msg);
35-
36-
equal(msg, message);
37-
38-
process.exit(0);
1+
import "./webrtc.mjs"
2+
import "./sctp.mjs"

import-test/webrtc.mjs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { equal } from 'node:assert';
2+
import { RTCPeerConnection } from 'werift-dev';
3+
4+
const pcA = new RTCPeerConnection();
5+
const pcB = new RTCPeerConnection();
6+
7+
8+
const dcA = pcA.createDataChannel("test");
9+
const dcBPromise = new Promise((resolve) => {
10+
pcB.ondatachannel = (event) => {
11+
console.log("data channel event");
12+
resolve(event.channel);
13+
};
14+
});
15+
16+
17+
const offer = await pcA.createOffer();
18+
await pcB.setRemoteDescription(await pcA.setLocalDescription(offer));
19+
console.log("offer set");
20+
21+
const answer = await pcB.createAnswer();
22+
await pcA.setRemoteDescription(await pcB.setLocalDescription(answer));
23+
console.log("answer set");
24+
25+
const dcB = await dcBPromise;
26+
console.log("data channel created");
27+
28+
const message = "Hello, World!";
29+
setImmediate(() => {
30+
dcA.send(message);
31+
});
32+
33+
const [msg] = await dcB.onMessage.asPromise()
34+
console.log("message received:", msg);
35+
36+
equal(msg, message);
37+
38+
pcA.close();
39+
pcB.close();

package-lock.json

Lines changed: 5 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)