-
Notifications
You must be signed in to change notification settings - Fork 12
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 unreliability (with an attribute) #74
Conversation
What QUIC are you talking about here? |
There are a lot of question marks:
|
I wasn't sure if it was best to specify the mechanism in the spec or to leave it up to implementations, but here's the mechanism we have in Chromium already (although not exposed to the Web API yet): if you detect you need to retransmit, abort writing to the stream (send RST_STREAM). So as two Martin's question: this is standard QUIC, nothing special. As to Lennart's questions:
I suppose we could call the attribute "abortWritingWhenLossDetected" of something like that. But then we'd be baking in the mechanism and closing ourselves off to future mechanisms that might be added. |
@lgrahl There is support for partially reliable streams in the current QUIC transport draft, and there is an Issue open in the QUIC applicability draft to explain this: Note that there is also a (distinct) proposal for a datagram extension: |
My two cents: I believe this goes beyond the original intent of this API. IIRC it was intended to be a low-level API for a QUIC transport, so it should reflect the QUIC transport and its streams via an API that feels native to JS developers but not provide additional abstractions/features (as for example Edit: Also, thanks for sharing the slides. This looks promising (although I'd like datagrams across different streams). |
In reply to Bernard: where is there support for unreliability in existing drafts? The issue you link to (quicwg/ops-drafts#15) seems to link to another issue (quicwg/ops-drafts#54) which approaches streams as messages, which is more like our approach to unreliability. In reply to Lennart: I agree we should avoid much abstraction and leave things up to JS to do. In this case, however, that would require some kind of event from the browser to JS letting it know, on a per-stream basis, when retransmission is necessary. And then JS might not respond quickly enough to prevent the retransmission. And it might prevent us from using other retransmission mechanisms in the future. |
Via a flag called QuicStream.reliable