node-datachannel - libdatachannel node bindings
"libdatachannel is a standalone implementation of WebRTC Data Channels and WebSockets in C++17 with C bindings for POSIX platforms (including Linux and Apple macOS) and Microsoft Windows. "
NodeJS bindings for libdatachannel library.
Please check libdatachannel for Compatibility & WebRTC details.
Examples
const nodeDataChannel = require('../lib/index');
nodeDataChannel.initLogger("Debug");
let dc1 = null;
let dc2 = null;
let peer1 = new nodeDataChannel.PeerConnection("Peer1", { iceServers: ["stun:stun.l.google.com:19302"] });
peer1.onStateChange((state) => {
console.log("Peer1 State:", state);
});
peer1.onGatheringStateChange((state) => {
console.log("Peer1 GatheringState:", state);
});
peer1.onLocalDescription((sdp, type) => {
console.log("Peer1 SDP:", sdp, " Type:", type);
peer2.setRemoteDescription(sdp, type);
});
peer1.onLocalCandidate((candidate, mid) => {
console.log("Peer1 Candidate:", candidate);
peer2.addRemoteCandidate(candidate, mid);
});
let peer2 = new nodeDataChannel.PeerConnection("Peer2", { iceServers: ["stun:stun.l.google.com:19302"] });
peer2.onStateChange((state) => {
console.log("Peer2 State:", state);
});
peer2.onGatheringStateChange((state) => {
console.log("Peer2 GatheringState:", state);
});
peer2.onLocalDescription((sdp, type) => {
console.log("Peer2 SDP:", sdp, " Type:", type);
peer1.setRemoteDescription(sdp, type);
});
peer2.onLocalCandidate((candidate, mid) => {
console.log("Peer2 Candidate:", candidate);
peer1.addRemoteCandidate(candidate, mid);
});
peer2.onDataChannel((dc) => {
console.log("Peer2 Got DataChannel: ", dc.getLabel());
dc2 = dc;
dc2.onMessage((msg) => {
console.log('Peer2 Received Msg:', msg);
});
dc2.sendMessage("Hello From Peer2");
});
dc1 = peer1.createDataChannel("test");
dc1.onOpen(() => {
dc1.sendMessage("Hello from Peer1");
});
dc1.onMessage((msg) => {
console.log('Peer1 Received Msg:', msg);
});
setTimeout(() => {
dc1.close();
dc2.close();
peer1.close();
peer2.close();
dc1 = null;
dc2 = null;
peer1 = null;
peer2 = null;
nodeDataChannel.cleanup();
}, 10 * 1000);
Install
Prebuilt binaries are available for Windows (x86,x64), Linux & Mac (Node Version >= 10)
> npm install node-datachannel --save
Build
Requirements
Building from source
> git clone https://github.com/murat-dogan/node-datachannel.git
> cd node-datachannel
> npm i
Build with libnice support
> npm run install-nice
Other Options
> npm run install -- -DUSE_GNUTLS=1
> npm run install -- -DUSE_SRTP=1
Test
> npm run test
> node test/connectivity.js
Examples
Check examples
folder