-
Notifications
You must be signed in to change notification settings - Fork 81
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
Add support for HTTP/2 originated Websockets (RFC 8441) #91
Comments
Happy to take on any / all of this, but @jeregrine indicated they may be taking some on first. Let's coordinate here. |
|
h2c support just landed in 1.0.0-pre.10 thanks to the hard work of @alisinabh! Let us know if you're able to make productive use of it @jeregrine ! RFC 8441 support is a separate (and in progress) workup, slated to land as part of 1.1, most likely later this summer. I'll update the scope of this issue to reflect that support; if there are any issues with h2c support please open them as a separate issue. |
WHOA NICE! @alisinabh !! |
One hell of a first-time contribution, amirite? |
I'm flattered guys :) |
Is this still an open issue? |
It is! It's a bit of a yak shave to land this properly, which is why it's taking so long. Current progress:
By the end of this workup, the fundamental architecture of Bandit will have changed to look like so (square brackets are modules, ---delimited text are interfaces)
|
I was talking to @mtrudel on slack and he came up with a list of steps in order to support http/2 h2c and http2 websockets:
bandit/http1/{adapter,handler}.ex
. This can mostly be cribbed directly from websocket support. I wouldn’t worry about parsing the request details here; just assume that a Plug will parse them out and pass it through as part of the opts in some format.bandit/http2/handler.ex
’shandle_connection/2
function for starting up an HTTP2 request based on the opts passed in above. Per RFC7540§3.2 this will need to know about settings & the HTTP/1 request that included the upgrade request.Plug.Conn.upgrade_adpater/4
that was added in step 1 above.May make sense to tackle step 4 first, depending on how you break the problem down in your head
The text was updated successfully, but these errors were encountered: