Reliable Signaler
It is a node.js and socket.io based reliable signaling implementation. Remember, reliable doesn't mean "scalable"; reliable simply means that it auto reconnects in any kind of failure or internet disconnect. It is having following features:
- Auto reconnects if node.js gets down out of any reason.
- Auto reconnects if internet connection disconnects.
- It provides custom-signaling for your RTCMultiConnection and DataChannel applications!
npm install reliable-signaler
How it works?
- You can store a room-id on server using
createNewRoomOnServer
method. - You can get that room-id using
getRoomFromServer
method.
How to use?
- In your Node.js server, invoke
require('reliable-signaler')
and pass HTTP-Server object. - In your HTML file, link this script:
/reliable-signaler/signaler.js
- In your
<script>
tag, invokeinitReliableSignaler
constructor. - Invoke
createNewRoomOnServer
method for room-moderator. - Invoke
getRoomFromServer
method from room-participants (multiple participants).
Demos
# install rtcmulticonnection-client
npm install rtcmulticonnection-client
node ./node_modules/rtcmulticonnection-client/server.js
# or intall datachannel-client
npm install datachannel-client
node ./node_modules/datachannel-client/server.js
# or intall videoconferencing-client
npm install videoconferencing-client
node ./node_modules/videoconferencing-client/server.js
Now open localhost port:8080
.
1st Step: Node.js Server-side code
To use it in your node.js code: (required)
var httpServer = ; httpServer || expressServer || portNumber // for custom socket handlers { socket; };
Constructor of the module reliable-signaler
takes an config
object where you can pass socketCallback
and other configurations:
var config = {};httpServer config;
*. socketCallback
: If you want to attach custom handlers over socket object.
2nd Step: Browser-side code
To use it in the browser: (required)
<script src="/reliable-signaler/signaler.js"></script>
And your client-side javascript code:
var connection = ; // invoke "initReliableSignaler" and pass "connection" or "channel" objectvar signaler = ;
Call createNewRoomOnServer
method as soon as you'll call open
method. You can even call createNewRoomOnServer
earlier than open
however it isn't suggested:
For RTCMultiConnection:
// for data-only sessionsconnection;signaler; // or (not recommended)signaler; // or --- recommended.connection;
For DataChannel:
channel;signaler;
For participants, call getRoomFromServer
method:
// RTCMultiConnectionsignaler; // DataChannelsignaler;
Complete Client-Side Example for RTCMultiConnection
Complete Client-Side Example for DataChannel
API Reference
Constructor takes either RTCMultiConnection
instance or a config
object:
# 1st option: Pass RTCMultiConnection objectvar signaler = ; # 2nd option: Pass "config" objectvar signaler = ;
initReliableSignaler
global-function exposes/returns 3-objects:
socket
createNewRoomOnServer
getRoomFromServer
// "socket" objectsignalersocket; // "createNewRoomOnServer" methodsignaler; // "getRoomFromServer" objectsignaler;
createNewRoomOnServer
This method simply takes sessioin-id
and stores in node.js server. You can even pass successCallback
.
signaler;
getRoomFromServer
This method looks for active sessioin-id
in node.js server. Node.js server will fire callback only when session is found.
If session is absent, then node.js server will wait until someone opens that session; and node.js will fire getRoomFromServer-callback
as soon a session is opened.
signaler;
License
Reliable-Signaler is released under MIT licence . Copyright (c) Muaz Khan.