Skip to content

danielwegener/akka-rtcweb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 :)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published