Awesome
### NOTE ###
This repository is out-of-date. For an actively maintained fork supporting Node 20 and more recent versions of WebRTC, see @roamhq/wrtc. Once @roamhq/wrtc
is stable, it will be merged back into this repository.
Other alternatives that might suit your needs are node-datachannel and werift
<h1 align="center"> <img height="120px" src="https://upload.wikimedia.org/wikipedia/commons/d/d9/Node.js_logo.svg" /> <img height="120px" src="https://webrtc.github.io/webrtc-org/assets/images/webrtc-logo-vert-retro-dist.svg" /> </h1>node-webrtc is a Node.js Native Addon that provides bindings to WebRTC M87. This project aims for spec-compliance and is tested using the W3C's web-platform-tests project. A number of nonstandard APIs for testing are also included.
Install
npm i -g node-pre-gyp
npm install wrtc
Installing from NPM downloads a prebuilt binary for your operating system × architecture. Set the TARGET_ARCH
environment variable to "arm" or "arm64" to download for armv7l or arm64, respectively. Linux and macOS users can also set the DEBUG
environment variable to download debug builds.
You can also build from source.
Supported Platforms
The following platforms are confirmed to work with node-webrtc and have prebuilt binaries available. Since node-webrtc targets N-API version 3, there may be additional platforms supported that are not listed here. If your platform is not supported, you may still be able to build from source.
<table> <thead> <tr> <td colspan="2" rowspan="2"></td> <th colspan="3">Linux</th> <th colspan="2">macOS</th> <th>Windows</th> </tr> <tr> <th>armv7l</th> <th>arm64</th> <th>x64</th> <th>arm64</th> <th>x64</th> <th>x64</th> </tr> </thead> <tbody> <tr> <th rowspan="6">Node</th> <th>8</th> <td align="center">✓</td> <td align="center">✓</td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> <tr> <th>10</th> <td align="center">✓</td> <td align="center">✓</td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> <tr> <th>11</th> <td align="center">✓</td> <td align="center">✓</td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> <tr> <th>12</th> <td align="center">✓</td> <td align="center">✓</td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> <tr> <th>13</th> <td align="center">✓</td> <td align="center">✓</td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> <tr> <th>14</th> <td align="center">✓</td> <td align="center">✓</td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> <tr> <th rowspan="2">Electron</th> <th>4</th> <td align="center"></td> <td align="center"></td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> <tr> <th>5</th> <td align="center"></td> <td align="center"></td> <td align="center">✓</td> <td align="center"></td> <td align="center">✓</td> <td align="center">✓</td> </tr> </tbody> </table>Examples
See node-webrtc/node-webrtc-examples.
Contributing
Contributions welcome! Please refer to the wiki.