如何在C#客户端

时间:2017-01-11 17:29:27

标签: c# signalr signalr.client

我有一个用C#编写的SignalR客户端应用程序,它从Hub订阅一个事件。当事件被“触发”时,应用程序执行一个方法。

问题是,对该客户的所有此类事件都是按顺序处理的。

使用案例/流程:

  1. 在浏览器中,用户单击按钮
  2. 该按钮触发对SignalR Hub的调用
  3. SignalR Hub将消息发送到特定的SignalR客户端
  4. SignalR Client收到事件/消息
  5. SignalR Client调用将消息存储在数据库中的方法
  6. SignalR Client调用Hub中的方法以返回结果
  7. 集线器向用户提供结果
  8. 如果其他用户同时点击该按钮,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("...");
    });
    

    有任何建议的做法以并发方式处理多个事件吗?

1 个答案:

答案 0 :(得分:0)

可以使用Async / Await解决。 Async函数将负责回复Hub。

myHub.On<ExecuteRequestModel, string>("Execute", async (request, to) => 
    await onExecute(request, to)
);