-
-
Notifications
You must be signed in to change notification settings - Fork 428
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
Question: any thoughts on reliable UDP or QUIC? And QoS? #717
Comments
This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 30 days. |
I looked at this more, and I wonder if one ideal approach would be to put MagicOnion's RPC over LiteNetLib (or similar) as the transport. It looks like the transport might be able to be swapped out, but after a bit of looking I couldn't quite figure out how to do it yet. Has anyone else thought about something like this? |
I would also like to be able to overwrite the transport. |
MagicOnion uses gRPC as its message protocol, so the available transport protocols are limited to those that HttpHandler and ASP.NET Core (Kestrel) can support. For example, SocketsHttpHandler and Kestrel support Unix Domain Sockets and NamedPipe, so you can use them, but if you want to use something like RUDP, you will need to implement transport support for HttpHandler and Kestrel that supports HTTP/2 semantics on top of RUDP. We understand the demand for using RUDP/KCP, etc., so we would like to consider separating the transports, but we don't have any detailed plans yet. |
If we separate it from ASP.NET Core, I expect that it won't be that difficult to run gRPC over RUDP without HTTP/2, but at the moment, many parts of MagicOnion.Server rely on ASP.NET Core and Grpc.AspNetCore. |
(I would post this as a discussion but it doesn't seem to be enabled for this repo.)
My understanding is most action games historically prefer some sort of reliable UDP, instead of TCP, because if packets are lost in a TCP connection, it has a head of line blocking problem which slows things down.
Is there any desire from Cysharp to consider this sort of functionality?
Note that there is a Microsoft QUIC implementation exposed to C# here:
https://github.com/microsoft/msquic
https://en.wikipedia.org/wiki/QUIC
[Edit: maybe I should be looking at this instead? https://github.com/RevenantX/LiteNetLib]
Suggested course of action:
The text was updated successfully, but these errors were encountered: