webrtc-signal-http-heartbeat

1.0.0 • Public • Published

webrtc-signal-http-heartbeat

Build Status

Deploy to Azure

webrtc-signal-http heartbeat timeout extension ❤️ ⏲

logo gif

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.

Getting started

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)

RESTful API

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. ✨

GET /heartbeat

Takes peer_id query 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

Extension API

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. ✨

module.exports

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.

router.peerList

[Object] - can be used to retrieve a PeerList from the express router. Returns a TimeoutPeerList object.

TimeoutPeerList

[Class] - Extends PeerList with the ability to have peers timeout.

refreshPeerTimeout

[Function] - Takes id (a Number). Resets the timeout on a peer, keeping it active. Returns nothing.

cancelGc

[Function] - Takes nothing. Stops the GC from running. Returns nothing.

HeartbeatOpts

[Object] - represents the options that can be given to the heartbeat creator

timeoutPeriod

[Number] - the timeout period in ms after which a client will be marked as stale, and cleaned up when the "gc" runs. Default 30s

gcInterval

[Number] - the interval in ms at which the gc will run, removing stale clients. Default 15s

License

MIT

Dependents (2)

Package Sidebar

Install

npm i webrtc-signal-http-heartbeat

Weekly Downloads

0

Version

1.0.0

License

MIT

Last publish

Collaborators

  • b3ngr33ni3r