SignalR来自客户端的多个并发呼叫

ron*_*nag 2 c# signalr

我希望能够做到这样的事情:

IHubProxy myHubProxy = /* ... */;

var t1 = Task.Run(() => myHubProxy.Invoke<int>("Foo");
var t2 = Task.Run(() => myHubProxy.Invoke<int>("Foo");

var r1 = await t1;
var r2 = await t2;
Run Code Online (Sandbox Code Playgroud)

"Foo"在服务器上并行执行的位置.但是,默认情况下工作方式我相信这两个调用都将同步到集线器的线程上下文并逐个运行.有没有简单的方法让一个hubProxy在同一个SignalR hubproxy /连接上安排两个并行调用?

Gus*_*nta 6

您不能并行发送消息,因为像webSockets这样的传输一直使用相同的连接,您将尝试交错消息并且无法处理.如果您需要并行进行多次传输,则使用多个连接

  • 我猜底层网络连接并不关心消息是否交错,重要的是使用连接的协议。而不是`Question 1 Reply1 Question 2 Reply2`,你怎么知道SignalR客户端不能支持`Question1 Question2 Reply1 Reply2`? (2认同)