SignalR'长轮询'同时发送多个请求

时间:2015-09-25 00:45:49

标签: signalr long-polling

我为我的网站编写了一个简单的“分析”跟踪工具,它具有布尔列,例如

Visited_Store Visited_Homepage Checkout_Started MainVideo_Played MainVideo_Completed

我也在使用Google Analytics(分析),但希望获得辅助活动。

我一直在测试我的应用程序主要是在Chrome中,默认情况下当然会使用网络套接字。我切换到长轮询,因为我希望能够监视Fiddler中的请求。

集线器的工作方式非常简单。 SignalR客户端发送事件,在特定事件完成时设置标志(列)。所以在调用时它会执行以下操作:

  • 为用户查找行 - 或创建(如果不存在)
  • 设置标志
  • 保存行

在我切换到长轮询之前,我没有并发问题 - 当我发现即时死锁时。

我的客户端经常会同时发送多个事件(单独的问题要修复 - 是),当使用Web套接字时,它们很好地排队并逐个执行。所以很明显,任何僵局都不太可能发生。

长轮询是一个不同的故事 - 我突然发现我的hub方法被多次输入并试图在整个地方创建多行,死锁和'行修改'错误。

一个简单的解决方案只是在提出请求时lock(lockObj),但如果我有很多客户,我宁愿不这样做。另一种方法是捕获死锁并重新执行现在几乎每个页面加载的请求。

有没有办法将SignalR长轮询配置为一次发送请求?或者其他一些依次执行请求的方法(就像使用SessionState时的ASP.NET一样)。

0 个答案:

没有答案
相关问题