我知道SignalR用于使用注入的动脉脚本与客户端浏览器进行通信。我似乎有一个常见问题,那就是我的浏览器的网络日志中充满了如下所示的条目:
... / arterySignalR / poll?transport = longPolling&connectionToken = ...
这告诉我SignalR已退回长时间轮询,而不是使用Web套接字。假设我们有一个支持Web套接字的浏览器,并且该浏览器正在localhost上运行,SignalR是否应该默认不使用Web套接字?是什么导致它退回长时间轮询?
简短答案
浏览器链接将仅在Windows 8或Windows Server 2012上使用WebSockets
更长的答案
如果您在Windows 7,Windows Vista或Windows Server 2008上使用Visual Studio,则以下内容将解释该问题:
IIS(Express)依赖于.NET框架中的实现System.Net.WebSockets
来处理WebSocket连接。正如您可以在指向MSDN的链接中阅读的那样,当您在Windows 7上安装.NET 4.5时,您根本没有获得必要类的实际实现。
因此,在这种情况下,服务器无法同意客户端将标准HTTP更改为WebSocket协议的请求,这将迫使SignalR客户端使用后备选项之一(在您的情况下为长轮询)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句