WebTransport feature rollout #189
Replies: 9 comments 18 replies
-
Yes. The PR is quite large, as the existing code had to be adapted to fit the low level access that WebTransport requires. However, the WebTransport handling is almost entirely contained inside a separate module, which can be moved to a separate crate. Will be working on cutting down the PR next week |
Beta Was this translation helpful? Give feedback.
-
This seems to fit with what I was asking originally about this feature:
If it's clean and not unreasonable to do so, it makes sense to me. That's how hyper has handle most other "on-top-of-HTTP" protocol stuff so far: try to allow implementation outside of hyper. |
Beta Was this translation helpful? Give feedback.
-
As it works now, The Uni streams work in a similar way. The inner connection only knows about the stream type, so that it isn't discarded, but nothing more is done with it. Datagrams use the ordinary HTTP/3 datagrams |
Beta Was this translation helpful? Give feedback.
-
Moving the WebTransport code to a seperate crate sounds good to me. Btw great work so far 💪 |
Beta Was this translation helpful? Give feedback.
-
Ok @Ruben2424 @seanmonstar @ten3roberts I split h3-webtransport into its own crate within the same repo, I would like to request a review. |
Beta Was this translation helpful? Give feedback.
-
Should the |
Beta Was this translation helpful? Give feedback.
-
Currently, Should |
Beta Was this translation helpful? Give feedback.
-
H3 primarily uses I have also seen while let Some(req) = conn.accept() {
let req = req?;
} With loop {
if let Some(req) = conn.accept()? {
}
} Furthermore, https://doc.rust-lang.org/std/ops/trait.Try.html It also fits better with iterator/streams return types without requiring What are your take som this? |
Beta Was this translation helpful? Give feedback.
-
I had to modify the quic traits to allow sending raw unframed bytes, as that is required by the webtransport spec. I.e, there is no data frame just byte after byte which can be read by the peer bit by bit, and sent bit by bit. I did this by making the What are your thoughts on this? Is there a better way to go about it? I am more than happy to change if so required. |
Beta Was this translation helpful? Give feedback.
-
#183 is very close.
h2 integrated extended connect via a separate crate to keep it modular and clean.
We could follow suit and literally just move the WebTransportSession struct and necessary code to a separate crate.
To support this new crate, lets call it h3-webtransport, we would still have to merge all the support code into h3.
What do you think @seanmonstar @ten3roberts ?
We could also delay that decision and keep it in h3 for now until it matures.
Beta Was this translation helpful? Give feedback.
All reactions