drogonframework / drogon

Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows
MIT License
11.61k stars 1.12k forks source link

http/2 and http/3 support #349

Open ihmc3jn09hk opened 4 years ago

ihmc3jn09hk commented 4 years ago

Wishing there is http/2 and possibly http3 ( http/2 + quic ) supported by Drogon. Not sure the prediction algorithm in http/2 is complicated or not. Possible reference

kapilpipaliya commented 4 years ago

https://nghttp2.org may be used to add HTTP/2 support

LifeIsStrange commented 4 years ago

Off topic but what is the HTTP1/1.1 library currently used by drogon? I'm curious because it seems to best the fastest HTTP framework https://www.techempower.com/benchmarks/#section=data-r19&hw=cl&test=composite

an-tao commented 4 years ago

Drogon does not depend on other HTTP libraries

shivshankardayal commented 3 years ago

This should be a high priority issue. Not having http2 support is a big problem.

MCMocoder commented 3 years ago

Drogon is really a perfect framework. But it is really a big problem that Drogon do not have http/2 support.

rbugajewski commented 3 years ago

Thanks for the feedback, and I agree. I think this is something we should tackle for the upcoming version 2.0.

patlecat commented 2 years ago

For when is HTTP2 support planned?

rbugajewski commented 2 years ago

As you can see we talked about this already a longer time ago. HTTP/2 is (compared to its predecessor) much more complex in its specification.

That said, every contribution is welcome. Unfortunately there is no official ETA.

tripleslash commented 2 years ago

Is this actively being worked on on any branch? Should be high prio issue imo

JensHumke commented 2 years ago

Any updates on HTTP/3 compatibility?

tripleslash commented 1 year ago

I realize HTTP 3 is a very complicated topic. Maybe its worth to check if we can add a lib that already implements it? And just wrap it in drogon? I think its necessary for a http framework to also support new http standards if the project wants to stay alive

@an-tao

an-tao commented 1 year ago

I realize HTTP 3 is a very complicated topic. Maybe its worth to check if we can add a lib that already implements it? And just wrap it in drogon? I think its necessary for a http framework to also support new http standards if the project wants to stay alive

@an-tao

Yes, I agree with you, what library do you recommend?

tripleslash commented 1 year ago

I haven't used any HTTP 3 library myself so I can't recommend one but the most popular one without much bloat seems to be the nghttp3 library. There is also quiche which is written in Rust but provides C bindings of the API.

patlecat commented 1 year ago

Yeah I was also about the suggest nghttp2/3 they were early to the party and seem to support HTTP/3 for a while now.

Zacorich commented 10 months ago

I haven't used any HTTP 3 library myself so I can't recommend one but the most popular one without much bloat seems to be the nghttp3 library. There is also quiche which is written in Rust but provides C bindings of the API.

I can suggest to focus on HTTP 3 only to save time. Also considering that Google MUST support the most complete implementation of QUIC, HTTP/2, HTTP/3, and related protocols and tools, they already doing it in C++ in this repository (No need to use bindings): https://github.com/google/quiche . Also QUIC was started by Google so it is most likely the standard will be best implemented and supported from within Google too - https://peering.google.com/#/learn-more/quic -> https://datatracker.ietf.org/doc/html/rfc9000 -> https://datatracker.ietf.org/doc/html/rfc9114 . Google recommends to follow their Chromium code base for client implementation and Envoy for server implementation.