-
Notifications
You must be signed in to change notification settings - Fork 243
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
WebTransport over HTTP/3 support #163
Comments
Hi @yutakahirano that's exciting news! I'll need a bit of time to familiarise myself with the draft spec before I can give you a meaningful answer. |
I had a first look at the specs, and I'm pretty sure this is something we want support for directly in H3Connection. My main concerns at this stage are that the APIs in the specs are asynchronous, where as I have strived to make H3Connection event-based, so as to allow it to be wrapper in whatever framework users see fit. Any thoughts here? @pgjones you may want to keep track of this issue :) |
Thank you very much!
Can you give some examples? |
Has any progress been made? I was using |
I have started work on this in PR #204 |
@yutakahirano I've got some basic support for unidirectional and bidirectional streams, and am now looking at datagram support. One question to which I have not found the answer in the specs is : what is the expected behaviour if a DATAGRAM cannot be parsed due to a truncated Session ID? |
@DavidSchinazi @vasilvv can you answer the above question? |
If a DATAGRAM is too short to parse the ID at the start, then the peer is violating the protocol. I'd suggest closing the connection with a H3_GENERAL_PROTOCOL_ERROR in that case. That's what draft-ietf-masque-h3-datagram mandates. @vasilvv we should tweak draft-ietf-webtrans-http3 to have it reference draft-ietf-masque-h3-datagram for things like this. |
@jlaine If this is the appropriate venue and issue, can you provide guidance on what needs to be updated in https://github.com/GoogleChrome/samples/blob/gh-pages/webtransport/quic_transport_server.py for the ability to test the changes in #204 at the front-end? |
It's not going to be "tweak" of that example, it will look very different as now everything is built on top of HTTP/3 and not directly on top of QUIC. My plan is to update the http3_server.py example, providing some basic abstraction to allow writing an example app (outside of the server code). For a more thorough integration into the Python web app ecosystem under the ASGI umbrella, I've started a conversation here: |
PR #204 has been merged, I'm going to close this issue once we have a minimal working demo in the |
PR #209 has been merged. It extends the HTTP/3 demo server with a minimal WebTransport demo. As usual the demo is accessible on https://quic.aiortc.org/ |
Awesome! Thank you very much! |
How to test the demo from HTML? What does
mean and what does that look like in code? |
@guest271314 you are right there is currently no JavaScript on the demo page exercising WebTransport as it is still behind a flag. You can do the following:
let transport = new WebTransport('https://quic.aiortc.org/wt');
await transport.ready;
let stream = await transport.createBidirectionalStream();
let reader = stream.readable.getReader();
let writer = stream.writable.getWriter()
await writer.write(new Uint8Array([65, 66, 67]));
let received = await reader.read();
await transport.close();
console.log('received', received); If all is well you should see: |
@jlaine I am running Chromium dev channel with the flag enabled Running the code at https://quic.aiortc.org/ does produce the expected result. Installing dependencies
followed by
example code at console
results in
at console and
at terminal. If this needs to be moved to a different issue, kind say so. I had I tried running the code with tests/ssl_cert.pem though there appears to be an error. Can you kindly create a minimal, verifiable, complete example, including all of the steps necessary to run
|
Come on please use some common sense, this is not specific to WebTransport. You are seeing a warning about a certificate not being valid, as well you should. Maybe the certificate is the issue? Try looking for how the --ignore-certificate-errors-spki-list flag works. |
The universe is based on questions and answers; logic. Thus I asked the experts the question. I found #127. Got the server working. The URL passed to It would be helpful to place the steps necessary to run the example on Chromium/Chrome in https://github.com/aiortc/aioquic/tree/main/examples. Something very simple like "To run the examples on Chromium or Chrome
the launch with
make the request to will suffice to help users who might not be as well-versed in Python and certificates as others. |
@jlaine I must be missing some common sense, somewhere. To ensure that I was not the victim of typos, I scripted all the steps so that the certificate is generated and the browsers are launched with the correct hash, both on the command line (for Chrome - note: you may need to exit your browser session for the command line flags to take effect) and in the Javascript I also tried various openssl command lines for using different kinds of certificates - since I saw some references saying that only EC certs could be used with Then I also tried to use mkcert: the certificate is accepted by both Chrome and Firefox for https connnections to my local web server (so the certificate is OK?), but still, not for What am I missing? |
Hi,
We are developing WebTransport over HTTP/3 which replaces WebTransport over QUIC (a.k.a. QUICTransport). I would like to use aioquic to implement a test server for web-platform tests (similar to what I did, writing a QuicTransport server on top of aioquic for testing).
https://tools.ietf.org/html/draft-ietf-webtrans-http3-00 is the spec draft.
To write a test server, I would like to implement some features specific to WebTransport over HTTP/3. Specifically,
To support WebTransport over HTTP/3, we need to...
I would like to avoid the last solution if possible.
Do you have any suggestions? I'm happy to make PRs if needed. Thank you!
cc: @vasilvv
The text was updated successfully, but these errors were encountered: