3
我有一个用C#编写的订阅来自Hub的事件的SignalR客户端应用程序。当事件被“解雇”时,应用程序执行一个方法。如何在C#客户端中同时处理多个事件
现在的问题是,所有这类客户端的事件都是按顺序处理的。
用例/流量:
- 在浏览器中,用户点击一个按钮
- 的按钮触发一个SignalR枢纽
- 的SignalR中心打电话将消息发送到特定的SignalR客户端
- SignalR客户端接收事件/消息
- SignalR客户端调用一个方法将消息存储在数据库中
- 的SignalR客户端调用轮毂中的方法返回的结果
- 集线器提供给用户的结果
如果另一个用户点击的同时按钮,SignalR客户端将只存储一次一条消息。
客户机示例:
myHub.On<ExecuteRequestModel, string>("Execute", (request, to) =>
{
logger.Info("Execute request received for connectionID: " + connection.ConnectionId);
myMethod();
myHub.Invoke("ExecuteResult", response, to);
logger.Info("Execute request processed");
logger.Info("...");
});
有任何建议的做法来处理并发的方式多个事件?
你能详细解释一下......也许有一个示例场景吗? – Hackerman
Hi @Hackerman。问题已更新。你可以看一下吗? –
也许可以使用'Task.Run'作为它,但我不确定是否可以从不同的线程发回响应。我很想知道这个设计。为什么Web应用程序(Hub)应该通过SignalR与数据库层进行通信,并且不要使用Web服务或类似的东西。 –