File tree Expand file tree Collapse file tree 5 files changed +92
-43
lines changed
Expand file tree Collapse file tree 5 files changed +92
-43
lines changed Original file line number Diff line number Diff line change 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}
Original file line number Diff line number Diff line change 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" ) ;
Original file line number Diff line number Diff line change 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"
Original file line number Diff line number Diff line change 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 ( ) ;
You can’t perform that action at this time.
0 commit comments