Awesome
Node-ICE
An implementation of Interactive Connectivity Establishment (ICE, RFC 5245) for Node.js.
Why is ICE useful?
ICE solves the problem of establishing a UDP based connection between two peers potentially behind NATs without them having to muck around with their router's port forwarding settings. Without ICE, it's highly likely for UDP connections given between two random peers to fail.
Implementation Details
For those of you who have read the spec(s). This is a full implementation (not a lite implementation), with full trickle (as opposed to half trickle), and aggressive nomination (as opposed to regular nomination).
This module was seperated from my Node.js RTCPeerConnection implementation for reusability. As such, that library drives the interface to this library.
What's Missing
- TURN candidate support
- Peer Reflexive candidate support
API
...
Relevant Specs
- RFC 5245 - ICE (Interactive Connectivity Establishment)
- RFC 5389 - STUN (Session Traversal Utilities for NAT)
- RFC 5766 - TURN (Traversal Using Relays around NAT)
- RFC 7064 - STUN URI Scheme
- DRAFT ICE-BIS - ICE (Interactive Connectivity Establishment)
- DRAFT ICE-Trickle - Incremental Provisioning for ICE