Unleash awesomeness. Private packages, team management tools, and powerful integrations. Get started with npm Orgs »


0.3.4 • Public • Published


NPM macOS/Linux Build Status Windows Build status

node-webrtc provides Node.js bindings to WebRTC M71. You can write Node.js applications that use RTCDataChannels with it. Some MediaStream APIs are supported.

x86 x64 armv6l armv7l arm64
Linux - ✔︎ ✔︎ ✔︎
macOS - ✔︎ - - -
Windows ✔︎ - - -

Getting Started


This library will attempt to download pre-compiled binaries for your particular platform using node-pre-gyp; however, if binaries are unavailable, it will fallback to building from source using node-cmake. When building from source, in addition to the prerequisites required by node-cmake, you will need


The easiest way to install is via npm:

npm install wrtc

If you want to work from source, run

git clone https://github.com/js-platform/node-webrtc.git
cd node-webrtc
npm install

Depending on what you checkout, npm install will either download a pre-compiled binary or attempt to build from source. Set SKIP_DOWNLOAD=true to always build from source. See below for more information on building from source.


If you would like to build node-webrtc from source, run

./node_modules/.bin/ncmake rebuild

You can pass either --debug or --release to build a debug or release build of node-webrtc (and the underlying WebRTC library). Refer to node-cmake for additional command-line options to ncmake.

Other Notes


On Linux, we statically link libc++ and libc++abi. Also, although we compile WebRTC sources with Clang (downloaded as part of WebRTC's build process), we compile node-webrtc sources with GCC 5.4 or newer.


In order to cross-compile for armv7l on Linux,

  1. Set TARGET_ARCH to "arm".
  2. Install the appropriate toolchain, and set ARM_TOOLS_PATH.
  3. On Ubuntu, you may also need g++-arm-linux-gnueabihf.
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
SKIP_DOWNLOAD=true TARGET_ARCH=arm ARM_TOOLS_PATH=$(pwd)/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf npm install

In order to cross-compile for arm64 on Linux,

  1. Set TARGET_ARCH to "arm64".
  2. Install the appropriate toolchain, and set ARM_TOOLS_PATH.
  3. On Ubuntu, you may also need g++-aarch64-linux-gnu.
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
tar xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
SKIP_DOWNLOAD=true TARGET_ARCH=arm64 ARM_TOOLS_PATH=$(pwd)/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu npm install


On macOS, we compile WebRTC sources with the version of Clang downloaded as part of WebRTC's build process, but we compile node-webrtc sources using the system Clang.


On Windows, we do not compile WebRTC sources with Clang. This is disabled by passing is_clang=false to gn gen.


Unit & Integration Tests

Once everything is built, run

npm test

Web Platform Tests

web-platform-tests/wpt defines a suite of WebRTC tests. node-webrtc borrows a technique from jsdom/jsdom to run these tests in Node.js. Run the tests with

npm run wpt:test

MediaStream Loopback Example

This example demonstrates relaying MediaStreamTracks through node-webrtc. Run the example with

node examples/loopback.server.js

Then navigate to http://localhost:8080/loopback.client.html. You should be prompted for your microphone and webcam. Once granted, the browser negotiates an RTCPeerConnection with the server, and the server relays the browser's MediaStreamTracks. Finally, these are displayed in a <video> element in the browser.


npm i wrtc

Downloadsweekly downloads








last publish


  • avatar
  • avatar
Report a vulnerability