This library implements signaling client and server for WebRTC utilising Node.js WebSocket server.
Your ID in the signaling server is created by taking SHA256 hash from email + secret token you pass in the client constructor.
const SignalingChannel = require('../../src/signaling-channel').SignalingChannel;
const configuration = { iceServers: [{urls: 'stun:stun1.l.google.com:19302'}] };
const signalingServerUrl = 'wss://tlaukkan-webrtc-signaling.herokuapp.com/'
const signalingChannelOne = new SignalingChannel(WebSocket)
signalingChannelOne.autoReconnect = false
signalingChannelOne.addServer(signalingServerUrl, 'test1@x.x', uuidv4())
const signalingChannelTwo = new SignalingChannel(WebSocket)
signalingChannelTwo.autoReconnect = false
signalingChannelTwo.addServer(signalingServerUrl, 'test2@x.x', uuidv4(), async (receivedSignalingServerUrl, selfPeerId) => {
// Offer data channel with signaling channel one.
const connection = new RTCPeerConnection(configuration)
const channel = connection.createDataChannel('chat');
channel.onopen = () => {
console.log("channel one opened")
channel.send("test");
};
await signalingChannelOne.offer(receivedSignalingServerUrl, selfPeerId, connection)
})
signalingChannelTwo.onOffer = (url, peerId, offer) => {
// Accept data channel with signaling channel two.
const connection = new RTCPeerConnection(configuration)
connection.ondatachannel = (event) => {
const channel = event.channel;
channel.onopen = () => {
console.log("channel two opened")
};
channel.onmessage = (event) => {
console.log("channel two received message " + event.data)
};
};
return connection
}
npm publish --access public
npm version patch
npm publish
- Checkout this project from github.
- Install heroku cli.
heroku create <your-heroku-account>-webrtc-signaling
git push heroku master
heroku logs -t
2018-06-09T05:57:41.988484+00:00 app[web.1]: signaling server connection request from 10.43.181.164:22969
2018-06-09T05:57:42.124399+00:00 app[web.1]: signaling server handshake success: 2482c8cb6cb565a2518f7228f65f9954d44f00d20e60df3a7b3954e533578560 10.43.181.164:22969
2018-06-09T05:57:42.250803+00:00 app[web.1]: signaling server relayed message greeting : "hello" from 2482c8cb6cb565a2518f7228f65f9954d44f00d20e60df3a7b3954e533578560 10.43.181.164:22969 to 2482c8cb6cb565a2518f7228f65f9954d44f00d20e60df3a7b3954e533578560 10.43.181.164:22969
2018-06-09T05:57:42.375682+00:00 app[web.1]: signaling server disconnected: 2482c8cb6cb565a2518f7228f65f9954d44f00d20e60df3a7b3954e533578560 10.43.181.164:22969
Signaling server provides 200 OK healthcheck_ /signaling-health-check.