Sigver
WebRTC Signaling server based on WebSocket for Netflux API, Javascript client and server side transport API for establishing peer to peer network.
Install
npm install -g sigver
Run
Usage: sigver [options] Signaling server
Server protocol
Server uses Protocol Buffers for encode/decode all messages.
syntax = "proto3"; message Message { oneof type { // INCOMING AND OUTCOMING MESSAGES // Server sends `heartbeat` message each 5 seconds and expects getting the // same message back. If after 3 tentatives still no response then close the // connection. // Server sends a heartbeat every 5 seconds and expects to receive it as well. After three missed heartbeats bool heartbeat = 1; // Any message to be exchanged between two peers. // For instance WebRTC offer, answer and candidates. Content content = 2; // INCOMING MESSAGE // Peer either wants to make sure that he is still a group member or wants // to become one. GroupData connect = 3; // OUTCOMING MESSAGE // Response to the connect request above. True if the peer is the only member // of the group or he is connected to at least one group member. Otherwise the // signaling server subscribes this peer to one of the group member (i.e. the // content message maybe exchanged) . bool connected = 4; }} message Content { uint32 senderId = 1; uint32 recipientId = 2; bool lastData = 2; // Indicates that this is the last data to be forwarded bytes data = 3; // Any data sent by the peer} message GroupData { uint32 id = 1; // Current peer id in the group repeated uint32 members = 2; // Peer's members view. Maybe an empty array.}
Server may close the socket with the following codes:
- ERR_KEY: 4741 // Inappropriate key format (e.g. key too long)
- ERR_HEARTBEAT = 4742 // Heart-beats error
- ERR_MESSAGE = 4743 // Any error due to message: type, format etc.
- ERR_BLOCKING_MEMBER = 4744 // When only one member left in the group and new peers could not join via him.