11

我了解 SignalR 用于使用注入的动脉脚本与客户端浏览器进行通信。我有一个似乎很常见的问题,即我的浏览器的网络日志中充满了如下所示的条目:

.../arterySignalR/poll?transport=longPolling&connectionToken=...

这告诉我 SignalR 已经退回到长轮询而不是使用 Web 套接字。假设我们有一个支持 Web 套接字的浏览器,并且该浏览器在 localhost 上运行,那么 SignalR 不应该默认使用 Web 套接字吗?什么可能导致它退回到长轮询?

4

1 回答 1

9

简短的回答

浏览器链接将仅在 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 客户端使用一种后备选项(在您的情况下:长轮询)。

于 2014-02-11T15:49:57.533 回答