npm.io
0.0.11 • Published 5 months ago

werift-sctp

Licence
MIT
Version
0.0.11
Deps
1
Size
350 kB
Vulns
0
Weekly
0

werift-sctp

SCTP Implementation for TypeScript
based on aiortc/sctp

Example

import { createSocket } from "dgram";
import { SCTP, WEBRTC_PPID, createUdpTransport } from "werift-sctp";

const port = 5555;

const socket = createSocket("udp4");
socket.bind(port);

const server = SCTP.server(createUdpTransport(socket));
server.onReceive.subscribe((streamId, ppId, data) => {
  console.log(data.toString());
  server.send(0, WEBRTC_PPID.STRING, Buffer.from("pong"));
});

const client = SCTP.client(
  createUdpTransport(createSocket("udp4"), {
    port,
    address: "127.0.0.1",
  })
);
client.onReceive.subscribe((streamId, ppId, data) => {
  console.log(data.toString());
});

await Promise.all([client.start(5000), server.start(5000)]);
await Promise.all([
  client.stateChanged.connected.asPromise(),
  server.stateChanged.connected.asPromise(),
]);

client.send(0, WEBRTC_PPID.STRING, Buffer.from("ping"));

SCTP.stop() stops the SCTP association only. It does not close the underlying transport automatically, so close your UDP socket (or transport) explicitly when your application is done with it. onReceive is an Event<[streamId, ppId, data]>; use subscribe, once, or asPromise (not assignment).

reference