Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support HTTP/2, HTTP/3 and QUIC in HTTP server #3995

Closed
kitsonk opened this issue Feb 14, 2020 · 18 comments
Closed

Support HTTP/2, HTTP/3 and QUIC in HTTP server #3995

kitsonk opened this issue Feb 14, 2020 · 18 comments
Labels
cli related to cli/ dir feat new feature (which has been agreed to/accepted)

Comments

@kitsonk
Copy link
Contributor

kitsonk commented Feb 14, 2020

This was discussed over in denoland/deno_std#153 but was locked during the move.

While we still have concerns around the HTTP server, we should also consider supporting HTTP/2, HTTP/3 and QUIC.

@hazae41
Copy link
Contributor

hazae41 commented Feb 25, 2020

#1558

@ry
Copy link
Member

ry commented Feb 25, 2020

It's quite likely that we will expose native HTTP server.

Getting these protocols correct is very difficult - it's better to collaborate with other Rust users. We will probably using warp. (We will be using warp for Chrome DevTools web socket server, so it makes sense to also expose a native WebSocket object using that. Might as well also use it for HTTP bindings.)

The reason why we have std/http and not a native HTTP server is because we're still working out the kinks in the "op model". In our benchmarks deno_tcp is still slower than node_tcp

3c49cb

I want to fix that first before adding the native HTTP since it will be built on top of the same primitives.

@hcldan
Copy link

hcldan commented May 18, 2020

@ry Is there a ticket for those performance benchmarks or any schedule for when it might make it in?

@Justsnoopy30
Copy link

What's the status on http/2 support in Deno?

@kitsonk
Copy link
Contributor Author

kitsonk commented Jun 12, 2020

The issue is open. That indicates that it isn't resolved yet.

@Justsnoopy30
Copy link

The issue is open. That indicates that it isn't resolved yet.

Well yes, I can see that. What I meant was, how much progress has been made on this?

@kitsonk
Copy link
Contributor Author

kitsonk commented Jun 13, 2020

Any progress would be mentioned in this issue.

@Dygear
Copy link
Contributor

Dygear commented Mar 7, 2021

Apple Push Notification Service is going to require HTTP/2 starting April 1st 2021. Looking over their documentation, it's acceptable to keep a long standing connection to their servers, but requires a PING FRAME about every hour to be sent. So whomever does end up landing HTTP/2, can they please add to option to sending these frames manually, it would be of great help.

@lucacasonato
Copy link
Member

@Dygear This is client to sever communication, right? The API for that is fetch and it already supports HTTP/2.

@lucacasonato lucacasonato changed the title Support HTTP/2, HTTP/3 and QUIC Support HTTP/2, HTTP/3 and QUIC in HTTP server Mar 7, 2021
@ry
Copy link
Member

ry commented Mar 7, 2021

We are working on hyper bindings and hope to have them complete for v1.9

@anonrig
Copy link

anonrig commented Apr 1, 2021

Hi! I'm a maintainer from mali (GRPC microservice framework) and wanted to stay in the loop. We're currently investigating supporting Deno in Mali. If you're interested in this support, please send us a message from malijs/mali#241

@badsyntax
Copy link

@anonrig also refer to #3326 for additional discussions about grpc in Deno

@rektide
Copy link

rektide commented Apr 1, 2021

PR #9935 is (i believe) a start on those Hyper bindings @ry mentioned!

worth pointing out that Hyper itself is still working on HTTP/3, via a subproject. most of those efforts are currently going in to an h3 library, is my understanding. h3 seems to use the Quinn http/3 implementation.

happy hacking all! thanks everyone!!! 🚀 bonus shout out: PR #9935 is an anagram of this PR #3995!!! eerie coincidence? manifest destiny? what's your take on this little serendipity?

@ynwd
Copy link

ynwd commented Apr 7, 2021

We are working on hyper bindings and hope to have them complete for v1.9

@ry @kitsonk @lucacasonato
is it possible to change these bindings dynamically - using the fastest rust framework?

Screen Shot 2021-04-07 at 11 15 55

https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=fortune&l=yyku7z-sf

@bartlomieju
Copy link
Member

No, the bindings use hyper and it can't be changed.

@ry
Copy link
Member

ry commented Apr 20, 2021

HTTP/2 shipped in v1.9.0 (see #9935)

HTTP/3 and QUIC can be discussed in a new issue.

@ry ry closed this as completed Apr 20, 2021
@waldyrious
Copy link
Contributor

HTTP/3 and QUIC can be discussed in a new issue.

There is #1558 which was closed as a duplicate (subset) of this one. Maybe it should be reopened, @kitsonk?

@trivikr
Copy link
Contributor

trivikr commented Apr 20, 2021

There is #1558 which was closed as a duplicate (subset) of this one. Maybe it should be reopened

The issue #1558 was reopened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cli related to cli/ dir feat new feature (which has been agreed to/accepted)
Projects
None yet
Development

No branches or pull requests