All Projects → danielwegener → akka-rtcweb

danielwegener / akka-rtcweb

Licence: Apache-2.0 License
No description, website, or topics provided.

Programming Languages

scala
5932 projects
HTML
75241 projects

WORK IN PROGRESS!

akka-rtcweb-experimental

This project aims to provide an akka server-side implementation of the rtcweb protocol stack focused on the RTCDataChannels (High Performance Browser Networking, Ch. 8 by @igrigorik gives a very good introduction on this topic). This is achieved by implementing draft-ietf-rtcweb-gateways-00: WebRTC Gateways with the following details:

  • ICE-Support for TURN/Trickle (no TURN yet, so no full ICE implementation)
  • Support for DataChannels
  • Since we are only interested in the Data channels at the moment, we can ignore SRTP (yet, not conforming to the spec)

RTCWEB allows akka systems to establish (somewhat) encrypted low-latency DataChannels with user-agents or other actor systems. These channels support configurable reliability semantics like partial ordering and relaxed reliability guarantees (like udp does) and thus can still reach a very low latencies on unreliable or slow connections (compared to WebSockets or SSE). Additionally rtcweb supports multihoming and automatic reestablishing of connections which is a nice feature for moving, multi-homed clients. Thus this stack, even being a skyscraper, could lead to amazing new applications where actor systems participate in browser P2P-communication or create decentralized dynamic clusters.

This is just a just for fun private project and aims to implement a minimal working example. Any help, hints and contributions are welcome! I expect this solution to be not so fast since a lot of low level protocol plumbing is implemented with higher level constructs. The following protocols and RFCs are (partially) covered (you need to love network protocols):

The Stack

      <Transport>        <Signaling>
  +-----------------+
  |   WebRTC        |
  |   Data Channels |
  |   (rfc4960)     |
  +-----------------+
  | SCTP (rfc4960)  |
  +-----------------+
  |    DTLS 1.2     |------------------+ 
  |(draft-ietf-rt..)|   JSEP           |
  +-----------------+------------------+
  |   ICE/STUN      |   SDP            |
  +-----------------+------------------+
  |        (UDP)    |   (akka-http)    |
  +------------------------------------+
  |             (akka-io)              |     
  +------------------------------------+

User Api

Network Protocols

Base protocols:

WebRTC related:

Acknowledgments

Many many thanks to scodec and parboiled2. They make encoding/decoding and parsing a breeze!

Build it!

sbt package :)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].