An attempt (current WIP) to create a spec compliant implementation of RTCPeerConnection for Node.js entirely in JavaScript with no native C or C++ code. This enables browser-peers to speak to non-browser (Node.js) peers, or non-browser peer to non-browser peer communication over RTCDataChannels.
This includes a FULL ICE implementation that works with SDP (as opposed to SIP, though the two can be decoupled).
Able to initiate a call and connect successfully to Firefox.
Not RFC compliant, can't receive calls, doesn't work with other browsers (haven't tried).
- ICE
- SDP
- SIP (no plans to implement)
- ICE Lite (no plans to implement)
- ICE Full
- HOST Candidates
- ICE Half Trickle (no plans to implement)
- ICE Full Trickle
- SRFLX Candidates (STUN)
- RELAYED Candidates (TURN)
- PRFLX Candidates
- DTLS
- SCTP
- RTCPeerConnection
- Newer Promise API from Spec
- Older Callback API from Spec (no plans to implement)
- DataChannel
- Audio/Video (not planned, but maybe)
The current process involves running node server/server.js
, then opening
localhost:8080
in Firefox, then running node server/main.js
, checking
Firefox's about:webrtc
logs, reload Firefox tab, and iterating.
- RFC 3264 - SDP Offer/Answer
- RFC 4566 - SDP (Session Description Protocol)
- RFC 4572 - SDP Fingerprint
- RFC 5245 - ICE (Interactive Connectivity Establishment)
- RFC 5389 - STUN (Session Traversal Utilities for NAT)
- RFC 5766 - TURN (Traversal Using Relays around NAT)
- RFC 6347 - DTLS (Datagram Transport Layer Security)
- RFC 7064 - STUN URI Scheme
Prefer these to specs when applicable.