-
Notifications
You must be signed in to change notification settings - Fork 10.3k
SignalR support for webtransport #39583
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
Comments
@unicomp21 thanks for contacting us. We use SignalR, so we would only use this transport if SignalR supported it and we deemed worth it. The very likely answer is that it is very unlikely that we would use something based on UDP. We rely on many TCP features like ordering and flow control which we would need to reimplement if we were using UDP. |
I believe WebTransport also supports ordering? Isn't there an option for it? Starting to realize I could really use some help from @nibanks, on the quic team, to explain why there might be a compelling argument for supporting WebTransport. Correct me if I'm wrong, doesn't every tcp/websocket connection lock up resources (ie like memory for send/recv buffers) on the kernel side? I've also seen benchmarks where latency increases as the number of tcp connections, which the kernel must multiplex, moves into the thousands. With webtransport, as opposed to to websocket, I believe it's a single udp socket and the rest (ie per connection data structures) gets handled in user space. Incredibly efficient. |
https://developer.chrome.com/blog/new-in-chrome-97/#webtransport I'm guessing this means Edge, which is based on chromium? Will follow shortly? |
Yes, Edge is generally in sync with Chrome for features like this. |
@nibanks that's fair, but in the context of Blazor its completely abstracted by SignalR, so provided its exposed by SignalR and satisfies the ordering and reliability constraints Blazor Server requires, then it can be used, but in any case, this will be something transparent to Blazor, since it's configured on the SignalR Hub. @unicomp21 Feel free to file a specific issue for support for this transport in SignalR instead. |
@javiercn apologies, I was confused earlier. This isn't a Blazor specific feature. It would be for Aspnet in general, both server and client sides. Any place there is websocket support, the intention would be to also have webtransport support. |
I renamed the issue "Blazor" -> "Aspnet". |
See also #12040 |
We released HTTP/3 support as an experimental feature in .NET 6 and are working to make it non-experimental in 7. As we do that, we should evaluate what, if any, support we'll need to add for WebTransport. Moving this to the .NET 7 milestone just for that investigation/groundwork. We don't actually plan to ship WebTransport support in .NET 7. |
https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3/#section-2
This would require support in our HTTP/3 implementation. |
@nibanks ^ |
@unicomp21 that's a job for the .NET HTTP/3 folks, not MsQuic 😄 |
Lol, so many new layers, I get confused! 😄 |
Thanks for contacting us. |
For Blazor SignalR, it requires the browser runtime to use So, I wish .NET expose QUIC API and HTTP/3 helper classes as public APIs or separate nuget packages such that we don't have to wait until November and a big Visual Studio update for .NET 7. |
@wegylexy does anything prevent us from simply forking the repo? |
@nibanks if we forked .net http/3 stack to make the webtransport changes, what are the downsides? |
I am not familiar with building the SDK/runtime itself, so I am using the same namespace in my assembly to override the classes and add datagram support. There may be name conflicts when the official API becomes |
@unicomp21 I don't have the necessary expertise at the .NET layer to provide useful guidance, but ideally the best way forward would likely be to work with the .NET devs to add the functionality you need directly to .NET. |
WebTransport is making great progress, but it's very unlikely SignalR will be able to make use of it in the short time left for 7.0. Moving to .NET 8 Planning. |
An update on WebTransport status in .NET 7: https://devblogs.microsoft.com/dotnet/experimental-webtransport-over-http-3-support-in-kestrel/ |
Thx!
…On Mon, Nov 14, 2022 at 5:12 PM Aditya Mandaleeka ***@***.***> wrote:
An update on WebTransport status in .NET 7:
https://devblogs.microsoft.com/dotnet/experimental-webtransport-over-http-3-support-in-kestrel/
—
Reply to this email directly, view it on GitHub
<#39583 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAEFL7M6JMVFT4DQI7X2EO3WILBOLANCNFSM5MFHAGSQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Any updates on this for .net 8? |
.NET 8 is done, and the webtransport spec is still in draft mode. No updates. |
Any updates on this ? |
No, webtransport is still in draft mode. And even if it wasn't, this would require a massive amount of work to "properly" make use of webtransport in SignalR. There is the simpler approach of just adding it as another transport that works exactly like the other transports, but this wouldn't make use of webtransport streams, which is a great feature webtransport provides that we should make use of. e.g. Streaming hub methods on a separate stream. |
Is there an existing issue for this?
Is your feature request related to a problem? Please describe the problem.
On the server side, do websockets create more mux overhead than UDP? If so, does this make a good argument for having Blazor support Webtransport? It appears Webtransport just went GA in Chrome a couple weeks ago? Does this mean Edge will follow soon?
https://developer.chrome.com/blog/new-in-chrome-97/#webtransport
Describe the solution you'd like
In the same way client side websocket can be used in Blazor, I would also like to use Webtransport client side connections.
Additional context
No response
The text was updated successfully, but these errors were encountered: