Re: [webrtc-pc] Add support for WebRTC Data Channel in Workers

The WebRTC working group is soliciting use cases for the next version of WebRTC. I just posted my suggestions to the mailing list. If you have an interest in making the next version of WebRTC better-suited to supporting DHTs or other peer-to-peer use cases, then now is the time to make your voice heard.

The mailing list is here: https://lists.w3.org/Archives/Public/public-webrtc/

Here is what I posted:

> Here are my use cases for the next version of WebRTC:
> 
> Peer-assisted delivery.
>   - See products from companies like PeerCDN (my company, sold to Yahoo), Peer5, and Streamroot. See open source projects like WebTorrent, PeerTube, etc.
>   - All of these products would benefit from being able to use a ServiceWorker to intercept HTTP requests and then handle them via a WebRTC Data Channel instead. Currently, this requires creating the Data Channel in the main window and shuttling data back-and-forth between the main window and the ServiceWorker. If we add support for WebRTC Data Channel in Workers (see https://github.com/w3c/webrtc-pc/issues/230) then these use cases become a lot easier to support. Less data copying, simpler architecture, better battery life, etc.
> 
> Distributed Hash Tables (DHTs).
>   - DHTs are decentralized distributed systems that provide a lookup service similar to a hash table. DHTs are useful for finding peers without a central signaling infrastructure, and they're used in almost every widely-deployed peer-to-peer system, including BitTorrent, Bitcoin, IPFS, Dat, etc.
>   - With the current WebRTC connection model, DHTs are nearly impossible to build. We need the ability to store the "contact information" for a peer, close the connection to that peer, and then re-connect to that peer at some point in the future (if they're still online). With TCP/UDP, this is quite easy to accomplish. Simply store the ip:port (12.34.56.78:9000) and try to connect. If the peer is still online, it will just work.
>   - Peers need the ability to "listen" for incoming connections. Peers also need the ability to publish a "reusable SDP" that multiple peers can use to connect to listening peers (currently an SDP is usable only once)
> 
> Lighter-weight connections.
>   - It seems that the current WebRTC spec is very complex (or perhaps currently implementations are still immature). But this leads to a situation where it's really hard to open more than a dozen connections at once without the browser process hitting 100% CPU utilization. This prevents applications that would like to open 20+ connections from doing so, which makes Data Channels a lot less useful for use cases like peer-assisted delivery, peer-assisted live streaming, WebTorrent, DHTs, in-browser cryptocurrency networks, etc.

-- 
GitHub Notification of comment by feross
Please view or discuss this issue at https://github.com/w3c/webrtc-pc/issues/230#issuecomment-391181990 using your GitHub account

Received on Wednesday, 23 May 2018 00:23:40 UTC