deno icon indicating copy to clipboard operation
deno copied to clipboard

feat: Implement QUIC

Open devsnek opened this issue 2 years ago • 4 comments

Implements a QUIC interface, loosely based on the WebTransport API (a future change could add the WebTransport API, built on top of this one).

quinn is used for the underlying QUIC implementation, for a few reasons:

  • A cloneable "handle" api which fits quite nicely into deno resources.
  • Good collaboration with the rust ecosystem, especially rustls.
  • I like it.

devsnek avatar Jan 15 '24 04:01 devsnek

@devsnek we'll get more reviews in this week and aim to land it for v1.41.

bartlomieju avatar Feb 05 '24 23:02 bartlomieju

How hard or how long would it take to implement Webtransport with this PR ?

My suggestion is : why not adding it at the same time before merging in 1.41 since WT is 76% available on the browsers.

Adding a client seems "easy" enough, and a server which is upgrading the QUIC transport connection to a server (somewhat like Websocket works at the moment)

hironichu avatar Feb 19 '24 12:02 hironichu

How hard or how long would it take to implement WebTransport with this PR ?

Probably should be done in a separate PR imo. I'm really excited about this! Is there any consideration for this in deno 1.43 @bartlomieju?

lino-levan avatar Apr 05 '24 15:04 lino-levan

Very nicely done. Most of my suggestions are little nits. However, same as @mmastrac, I question whether this should be done as an extra module rather than within ext/net.

Either way, can you please resolve the merge conflicts?

I also think we should merge it into ext/net, and if we want to make protocol that depends on QUIC then we can make module ( i.e WebTransport and Media over Quic (MoQ)..

hironichu avatar Apr 17 '24 20:04 hironichu