Nth Phonetic Mnemonic

    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

    Keywords

    Install

    npm i webrtc-signal-http-heartbeat

    DownloadsWeekly Downloads

    2

    Version

    1.0.0

    License

    MIT

    Last publish

    Collaborators

    • b3ngr33ni3r