Signal-Fire Server is a WebRTC signaling server built for node.js.
A WebRTC signaling server communicates between peers to set up peer-to-peer audio/video and/or data channels. This allows your clients to communicate directly with each other.
- WebSockets powered WebRTC signaling server
- Messages are passed using simple JSON objects
- There is a tailor-made browser client available as well
- Automatic peer ID generation (also possible to plug in your own)
- Automatic routing of messages
- Supports one-to-one, one-to-many and many-to-many out of the box
- Horizontally scalable by using registries
You can help by reporting bugs or unexpected behavior. If you encounter anything, please open an issue, or even better, a pull request.
Install the module through npm:
npm i @signal-fire/server
There is also a CLI available to start and manage multiple workers simultaneously. The CLI is a work-in-progress, but can already be used.
To install the CLI:
npm i -g @signal-fire/cli
To start a new worker on port 3003:
> signal-fire start -p 3003
See the CLI documentation to learn how to use the CLI.
Click here to view the documentation.
In this example we use the LocalRegistry
in-memory
registry from the @lucets/registry package.
The resulting app is in fact just a Luce application, which you can extend yourself. You'll also need to use your own HTTP server, of course.
import { Server } from 'http'
import createApp from './index'
import { LocalRegistry } from '@lucets/registry'
const registry = new LocalRegistry()
const app = createApp(registry)
const server = new Server()
server.on('upgrade', app.onUpgrade())
server.listen(3003, () => {
console.log('Server listening on port 3003')
})
Copyright 2021 Michiel van der Velde.
This software is licensed under the MIT License.