paullouisageneau / libdatachannel

C/C++ WebRTC network library featuring Data Channels, Media Transport, and WebSockets
https://libdatachannel.org/
Mozilla Public License 2.0
1.67k stars 343 forks source link

WebTransport #111

Open graingert opened 4 years ago

graingert commented 4 years ago

There's a new WebRTC adjacent protocol in the works: https://tools.ietf.org/id/draft-vvv-webtransport-http3-02.html

WebTransport is a protocol framework that enables clients constrained by the Web security model to communicate with a remote server using a secure multiplexed transport. This document describes Http3Transport, a WebTransport protocol that is based on HTTP/3 [HTTP3] and provides support for unidirectional streams, bidirectional streams and datagrams, all multiplexed within the same HTTP/3 connection.

@paullouisageneau is this something within the remit of libdatachannel?

paullouisageneau commented 4 years ago

Support for WebTransport would be cool, however it requires an HTTP/3 stack.

I don't think a lot could be shared with the current implementation as it would require to introduce a library for QUIC. On the bright side, introducing QUIC would open the door for QUIC-based WebRTC data channels introduced by Google last year: https://github.com/w3c/webrtc-quic

jeffRTC commented 3 years ago

@paullouisageneau

How complex is it to create a HTTP/3 stack by a one man?

paullouisageneau commented 3 years ago

@jeffRTC It would take some work to write the stack from scratch. A bunch of implementations already exist, like nghttp3 or lsquic.

Additionally, p2p-webtransport, formerly webrtc-quic, the P2P version of webtransport, does not seem to be a priority and the draft is far from finished.

bfelbo commented 4 months ago

WebTransport is now supported by 76%+ of global devices and WebKit proclaimed their support of WebTransport so we might get Safari support this summer, which would make it supported across all major browsers 🥳 The HTTP/3 stack has also been maturing significantly so it's getting easier and easier to use WebTransport as part of a backend setup.

It'd be great to add WebTransport to libdatachannel as there's already language bindings such as node-datachannel. In this way, adding WebTransport here would quickly propagate to the rest of the ecosystem and might help propel WebTransport forward as a whole.

@paullouisageneau, I know it's a big ask, but would you consider prioritizing adding WebTransport?