{"id":26346934,"url":"https://github.com/coast-team/sigver","last_synced_at":"2026-03-08T11:33:23.235Z","repository":{"id":3462636,"uuid":"49658313","full_name":"coast-team/sigver","owner":"coast-team","description":"Signaling server for WebRTC.","archived":false,"fork":false,"pushed_at":"2022-02-16T17:04:11.000Z","size":4234,"stargazers_count":34,"open_issues_count":1,"forks_count":5,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-11T05:06:20.715Z","etag":null,"topics":["server-sent-events","signaling-server","websocket"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coast-team.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-14T16:08:31.000Z","updated_at":"2024-11-11T19:41:15.000Z","dependencies_parsed_at":"2022-08-06T14:00:54.448Z","dependency_job_id":null,"html_url":"https://github.com/coast-team/sigver","commit_stats":null,"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coast-team%2Fsigver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coast-team%2Fsigver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coast-team%2Fsigver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coast-team%2Fsigver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coast-team","download_url":"https://codeload.github.com/coast-team/sigver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243836003,"owners_count":20355616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["server-sent-events","signaling-server","websocket"],"created_at":"2025-03-16T07:15:01.031Z","updated_at":"2026-03-08T11:33:23.216Z","avatar_url":"https://github.com/coast-team.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sigver\n\n[![CI status][ci-img]][ci-url]\n[![NPM version][npm-img]][npm-url]\n\nWebRTC Signaling server based on **WebSocket** for [**Netflux API**](https://coast-team.github.io/netflux), Javascript client and server side transport API for establishing peer to peer network.\n\n## Install\n\n```shell\nnpm install -g @coast-team/sigver\n```\n\n## Run\n\n```shell\nUsage: sigver [options]\n\nSignaling server for WebRTC. Used by Netflux API (https://coast-team.github.io/netflux/)\n\nOptions:\n\n  -V, --version           output the version number\n  -h, --host \u003cip\u003e         Select host address to bind to (default: 0.0.0.0)\n  -p, --port \u003cnumber\u003e     Select port to use (default: 8000)\n  -k, --key \u003cfile path\u003e   Private key for the certificate.\n  -c, --cert \u003cfile path\u003e  The server certificate.\n  -a, --ca \u003cfile path\u003e    The additional intermediate certificate or certificates that web browsers will need in order to validate the server certificate.\n  -h, --help              output usage information\n\nExamples:\n\n  $ sigver                       # Signaling server is listening on 0.0.0.0:8000\n  $ sigver -h 192.168.0.1 -p 80  # Signaling server is listening on 192.168.0.1:80\n  $ sigver --key ./private.key --cert ./primary.crt --ca ./intermediate.crt --port 443  # Signaling server is listening on 0.0.0.0:443\n```\n\n## Server protocol\n\nServer uses [Protocol Buffers](https://developers.google.com/protocol-buffers/) for encode/decode all messages.\n\n```protobuf\nsyntax = \"proto3\";\n\nmessage Message {\n  oneof type {\n    // INCOMING AND OUTCOMING MESSAGES\n    // Server sends `heartbeat` message each 5 seconds and expects getting the\n    // same message back. If after 3 tentatives still no response then close the\n    // connection.\n    // Server sends a heartbeat every 5 seconds and expects to receive it as well. After three missed heartbeats\n    bool heartbeat = 1;\n    // Any message to be exchanged between two peers.\n    // For instance WebRTC offer, answer and candidates.\n    Content content = 2;\n\n    // INCOMING MESSAGE\n    // Peer either wants to make sure that he is still a group member or wants\n    // to become one.\n    GroupData connect = 3;\n\n    // OUTCOMING MESSAGE\n    // Response to the connect request above. True if the peer is the only member\n    // of the group or he is connected to at least one group member. Otherwise the\n    // signaling server subscribes this peer to one of the group member (i.e. the\n    // content message maybe exchanged) .\n    bool connected = 4;\n  }\n}\n\nmessage Content {\n  uint32 senderId = 1;\n  uint32 recipientId = 2;\n  bool lastData = 2; // Indicates that this is the last data to be forwarded\n  bytes data = 3; // Any data sent by the peer\n}\n\nmessage GroupData {\n  uint32 id = 1; // Current peer id in the group\n  repeated uint32 members = 2; // Peer's members view. Maybe an empty array.\n}\n```\n\nServer may close the socket with the following codes:\n\n- **ERR_KEY: 4741** // Inappropriate key format (e.g. key too long)\n- **ERR_HEARTBEAT = 4742** // Heart-beats error\n- **ERR_MESSAGE = 4743** // Any error due to message: type, format etc.\n- **ERR_BLOCKING_MEMBER = 4744** // When only one member left in the group and new peers could not join via him.\n\n\n[ci-img]: https://github.com/coast-team/sigver/actions/workflows/ci.yml/badge.svg\n[ci-url]: https://github.com/coast-team/sigver/actions/workflows/ci.yml\n[npm-img]: https://img.shields.io/npm/v/@coast-team/sigver.svg\n[npm-url]: https://www.npmjs.com/package/@coast-team/sigver\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoast-team%2Fsigver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoast-team%2Fsigver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoast-team%2Fsigver/lists"}