Skip to content

feat(http2): add HTTP/2 support #6487

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

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

Abdel-Monaam-Aouini
Copy link
Contributor

This PR adds native HTTP/2 support to Express, allowing developers to leverage HTTP/2's performance improvements while maintaining Express's familiar API.
Features :

  1. Complete HTTP/2 integration with both plain and secure (TLS) servers
  2. Compatible API with existing Express applications
  3. Proper handling of HTTP/2 streams, headers, and request/response objects
  4. Comprehensive test suite that verifies all aspects of HTTP/2 functionality
  5. Example application demonstrating HTTP/2 usage

@Abdel-Monaam-Aouini
Copy link
Contributor Author

@wesleytodd any updates here

Copy link
Member

@bjohansebas bjohansebas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your interest in working on this. I’m helping to lead this together with the whole team. There are a few things I’ve noticed:

  • This doesn’t fully test all the properties that Express has — only a few of them.

  • This needs to be done through the compatibility layer and ALPN negotiation; it’s more practical, requires less maintenance, and also supports fallback to HTTP/1.1.

    • Technically, to do that we need to stop altering the prototype of ServerResponse and IncomingMessage (see #6669), and we still need to figure out as a team how to achieve that. Ideally, we’d do something similar to how Fastify did it. (That will be done in a separate PR, since it could be a breaking change and requires extensive review to avoid accidentally breaking anything)
  • Most importantly, this is not going to be released very soon. We still need to decide as a team what will be included in Express v6, and while this is one of those things, there are other aspects that could affect it. That’s why you haven’t seen comments yet on how to move forward. I hope that doesn’t discourage you — there are many moving parts within Express to make this happen :) so the process is a bit slow. I encourage you to join the other conversations happening around this, because many things are connected to this work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants