我为我的网站编写了一个简单的“分析”跟踪工具,它具有布尔列,例如
Visited_Store
Visited_Homepage
Checkout_Started
MainVideo_Played
MainVideo_Completed
我也在使用Google Analytics(分析),但希望获得辅助活动。
我一直在测试我的应用程序主要是在Chrome中,默认情况下当然会使用网络套接字。我切换到长轮询,因为我希望能够监视Fiddler中的请求。
集线器的工作方式非常简单。 SignalR客户端发送事件,在特定事件完成时设置标志(列)。所以在调用时它会执行以下操作:
在我切换到长轮询之前,我没有并发问题 - 当我发现即时死锁时。
我的客户端经常会同时发送多个事件(单独的问题要修复 - 是),当使用Web套接字时,它们很好地排队并逐个执行。所以很明显,任何僵局都不太可能发生。
长轮询是一个不同的故事 - 我突然发现我的hub方法被多次输入并试图在整个地方创建多行,死锁和'行修改'错误。
一个简单的解决方案只是在提出请求时lock(lockObj)
,但如果我有很多客户,我宁愿不这样做。另一种方法是捕获死锁并重新执行现在几乎每个页面加载的请求。
有没有办法将SignalR长轮询配置为不一次发送请求?或者其他一些依次执行请求的方法(就像使用SessionState时的ASP.NET一样)。