使用SignalR,WebApi和Services

时间:2016-12-28 14:55:20

标签: javascript c# angularjs asp.net-web-api signalr

我是SignalR的新手,对于在某些情况下正确使用它有一些疑问

对于我的应用程序,我正在使用signalR向客户端传达他们提交的操作的状态,同时他们等待最终的响应。我的代码结构如下:

  1. 用户点击UI中的按钮
  2. 客户端与集线器之间建立的连接
  3. 致电我们的网站Api
  4. Web Api在我们的服务层上调用逻辑
  5. 服务层通过foreach处理数据。
  6. 对于每次迭代,集线器发送包含数据的信号,更新UI中的进度条
  7. 我已经能够实现这一切。但我必须使用GetHubContext设置一个新类型才能调用我的信号方法,因为我无法直接使用Hub对象。这样做不允许我将信号发送给特定用户,因为服务层不知道,我只能向所有用户广播。

    我应该使用什么模式来实现这一目标?对于我当前的设置,似乎我需要设置与其connectionId相等的组的传入连接,将connectionId传递给各个层,并根据需要向该特定“组”发送信号。这是最好的设置吗?

1 个答案:

答案 0 :(得分:1)

我会说答案是肯定的,这似乎是最好的设置。请阅读这个问题的答案,我会说这会帮助你举个例子。

SignalR - Sending a message to a specific user using (IUserIdProvider) *NEW 2.0.0*

[编辑]

关键点是connectionId和用户之间的映射。在你的情况下,它将取决于你的实现,我不能告诉你处理它的最佳方法......

此外,这里有一个非常好的答案,讨论SendToUser测试:

https://github.com/SignalR/SignalR/blob/release/tests/Microsoft.AspNet.SignalR.FunctionalTests/Server/Hubs/HubFacts.cs

它看起来像你可以在你的解决方案中使用的东西。 [编辑]

我希望它有所帮助。