Package Exports
- node-datachannel
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-datachannel) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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');
console.log('Main Exports: ', nodeDataChannel);
nodeDataChannel.initLogger("Debug");
let dc1 = null;
let dc2 = null;
let peer1 = new nodeDataChannel.PeerConnection("Peer1", { iceServers: ["stun.l.google.com:19302"] });
// Set Callbacks
peer1.onStateChange((state) => {
console.log("Peer1 State:", state);
});
peer1.onGatheringStateChange((state) => {
console.log("Peer1 GatheringState:", state);
});
peer1.onLocalDescription((sdp) => {
console.log("Peer1 SDP:", sdp);
peer2.setRemoteDescription(sdp);
});
peer1.onLocalCandidate((candidate) => {
console.log("Peer1 Candidate:", candidate);
peer2.addRemoteCandidate(candidate);
});
let peer2 = new nodeDataChannel.PeerConnection("Peer2", { iceServers: ["stun.l.google.com:19302"] });
// Set Callbacks
peer2.onStateChange((state) => {
console.log("Peer2 State:", state);
});
peer2.onGatheringStateChange((state) => {
console.log("Peer2 GatheringState:", state);
});
peer2.onLocalDescription((sdp) => {
console.log("Peer2 SDP:", sdp);
peer1.setRemoteDescription(sdp);
});
peer2.onLocalCandidate((candidate) => {
console.log("Peer2 Candidate:", candidate);
peer1.addRemoteCandidate(candidate);
});
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();
}, 10 * 1000);Install
Prebuilt binaries are available for Windows (x86,x64), Linux & Mac (Node Version >= 10)
> npm install node-datachannel --saveBuild
Requirements
- cmake >= V3.14
- libdatachannel dependencies
Building from source
> git clone https://github.com/murat-dogan/node-datachannel.git
> cd node-datachannel
> npm iBuild with libnice support
> npm run install-niceOther Options
> npm run install -- -DUSE_GNUTLS=1 # Use GNU TLS instead of OpenSSL (Default False)
> npm run install -- -DUSE_SRTP=1 # Enable SRTP for media support ( Default False)Test
> npm run test # Unit tests
> node test/connectivity.js # ConnectivityExamples
Check examples folder