什么版本的SignalR支持WebSockets?

时间:2013-10-13 21:21:06

标签: websocket signalr windows-server-2012 iis-8

当我们的项目运行.net 4.0时,我安装了SignalR包。我们已升级到4.5,我想支持WebSockets。我卸载了Signal包并重新安装了SignalR(per this answer)。但是,SignalR DLL版本(1.1.0 / 1.1.3)在两种情况下都是相同的。

这是我的配置:

  1. ASP.NET 4.5
  2. IIS 8.0(Windows Server 2012)
  3. 服务器上启用了WebSockets功能
  4. 支持WebSocket的浏览器(最新版本的Firefox)
  5. 即使我有所有这些必需的东西,我仍然得到这个:

      

    { “URL”: “/ signalr”, “ConnectionToken”: “Yy6qHcSMMm4vPl9i3ungxJ5aa2P0SJh4UoU4pelAyFcMud0596UaeB6x8AmhZ2SxW_MPk23QXrKGkwar7LjLLnWlBZx1nokd6LRe96k8D-Oua3kSnKsyDa1RrPTE0n9FyaUO9rK3caLfue20Dmx5UkB9F2TKusPD4PDqQw2”, “的ConnectionId”: “b7b00e98-3128-4fbb-ba63-fb16f922f168”, “的KeepAliveTimeout”:20.0, “DisconnectTimeout”:30.0 “TryWebSockets”:假 “WebSocketServerUrl”:NULL, “ProtocolVersion”: “1.2”}

    我猜重要的部分是:

    "TryWebSockets":false,"WebSocketServerUrl":null,"ProtocolVersion":"1.2"
    

    这是否意味着我没有使用WebSockets?我能错过什么?

    非常感谢。

3 个答案:

答案 0 :(得分:4)

SignalR的所有主要版本都支持WebSockets。

因此问题是“我的SignalR应用程序使用WebSockets需要什么?”

  1. ASP.NET 4.5
  2. IIS 8.0(Windows Server 2012或Windows 8)
  3. 服务器上启用了WebSockets功能
  4. 支持浏览器的WebSocket
  5. 现在我们已经确定了启用WebSocket的应用程序所需的内容,似乎您错过了WebSockets功能的启用。

    要在服务器上启用WebSockets,请按照“分步说明here进行操作。

    希望这有帮助!

答案 1 :(得分:1)

我知道你的问题 - 就像我们的问题一样!

您的问题是您正在运行的客户端。

  

客户端 Windows堆栈必须是> Windows7上使用WebSockets   .Net客户端

这也抓住了我们! 浏览器不受影响,因为它们有自己的WebSocket堆栈,但Windows .Net网络堆栈没有WebSockets。 Windows 8 / Windows 2012和IIS 8修复了这个问题。 这就是为什么SignalR负载测试仪(曲柄)在Windows7上运行时不能使用WebSockets,仅在Windows 2012中运行(无论服务器如何)

答案 2 :(得分:0)

  

我们已升级到4.5,我想支持WebSockets。   我正在运行Windows 2012 Server,IIS 8,WebSockets功能安装在服务器上,我仍然得到这个

由于您使用的是ASP.NET 4.5,IIS 8和Windows Server 2012,因此问题应该依赖于您将项目迁移到.NET Framework 4.5或使用浏览器的方式。鉴于大多数现代Web浏览器都支持Web套接字,我非常怀疑您的引用仍然适用于.NET framework 4.0。

尝试使用.NET框架创建一个新项目4.5。简单地使用项目属性设置目标有时不会更新程序集。