webrtc-signal-http heartbeat timeout extension ❤️ ⏲️
This adds an additional signal message to help prevent stale peers appearing as legitimate, by requiring clients to send this message at a defined interval. Clients that stop sending the message are removed from the PeerList.
Learn about the RESTful API extension via the OpenAPI doc (raw or hosted) to understand how clients should change their interaction with the service when using this extension.
To install a signal server including this extension that can be used in a cli npm install -g webrtc-signal-http-signal. To run it, just use webrtc-signal-http-heartbeat from the command line, using the PORT environment variable to configure it's listening port, WEBRTC_HEARTBEAT_MS to configure the heartbeat timeout, and WEBRTC_HEARTBEAT_GC_MS to configure the gc interval.
To consume this server in combination with webrtc-signal-http and other possible extensions, npm install webrtc-signal-http webrtc-signal-http-heartbeat and then run some code like the following:
const express = require('express')
const signalRouterCreator = require('webrtc-signal-http')
const heartbeatRouterCreator = require('webrtc-signal-http-heartbeat')
const app = express()
const heartbeatRouter = heartbeatRouterCreator()
const signalRouter = signalRouterCreator({
peerList: heartbeatRouter.peerList
})
app.use(signalRouter, heartbeatRouter)
app.get('/new-endpoint', (req, res) => { res.send('hello') })
app.listen(process.env.PORT || 3000)
To understand the base API provided by webrtc-signal-http, look at the docs for that project. This documents the API endpoints this extension adds. ✨
Takes
peer_idquery parameter
Indicates a peer is still actively connected and able to signal. This endpoint is expected to be called at an interval defined by the extension (default 30s). The response will be empty.
GET http://localhost:3000/heartbeat?peer_id=1 HTTP/1.1
Host: localhost:3000
=>
HTTP/1.1 200 OK
Content-Length: 0
To understand the base API provided by webrtc-signal-http, look at the docs for that project. This documents the javascript API this extension adds. ✨
This is the exported behavior, you access it with
require('webrtc-signal-http-heartbeat')
[Function] - takes a HeartbeatOpts indicating configuration options. Returns an express router object.
[Object] - can be used to retrieve a PeerList from the express router. Returns a TimeoutPeerList object.
[Class] - Extends PeerList with the ability to have peers timeout.
[Function] - Takes id (a Number). Resets the timeout on a peer, keeping it active. Returns nothing.
[Function] - Takes nothing. Stops the GC from running. Returns nothing.
[Object] - represents the options that can be given to the heartbeat creator
[Number] - the timeout period in ms after which a client will be marked as stale, and cleaned up when the "gc" runs. Default 30s
[Number] - the interval in ms at which the gc will run, removing stale clients. Default 15s
MIT

