Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用信号器、WebApi和服务_Javascript_C#_Angularjs_Asp.net Web Api_Signalr - Fatal编程技术网

Javascript 使用信号器、WebApi和服务

Javascript 使用信号器、WebApi和服务,javascript,c#,angularjs,asp.net-web-api,signalr,Javascript,C#,Angularjs,Asp.net Web Api,Signalr,我不熟悉SignalR,对于在某些场景中正确使用它有一些疑问 对于我的应用程序,我使用signar向客户机传递他们提交的操作的状态,同时他们等待最终响应。我的代码的结构如下: 用户单击UI中的按钮 在客户端和集线器之间建立的连接 调用我们的Web Api Web Api在我们的服务层上调用逻辑 服务层通过foreach处理数据 对于每次迭代,中心都会发送一个信号,其中包含更新UI中进度条的数据 我已经做到了这一切。但我必须使用GetHubContext设置一个新类型,以便能够调用我的signal

我不熟悉SignalR,对于在某些场景中正确使用它有一些疑问

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

  • 用户单击UI中的按钮
  • 在客户端和集线器之间建立的连接
  • 调用我们的Web Api
  • Web Api在我们的服务层上调用逻辑
  • 服务层通过foreach处理数据
  • 对于每次迭代,中心都会发送一个信号,其中包含更新UI中进度条的数据
  • 我已经做到了这一切。但我必须使用GetHubContext设置一个新类型,以便能够调用我的signal方法,因为我无法直接使用Hub对象。这样做不允许我向特定用户发送信号,因为服务层不知道,我只能向所有用户广播


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

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

    [编辑]

    关键点是connectionId和用户之间的映射。在你的情况下,这将取决于你的实施,我不能告诉你最好的方式来处理它

    另外,这里有一个非常好的答案,它谈到了SendToUser测试:

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

    我希望有帮助