【问题标题】:SignalR always using longpollingSignalR 总是使用长轮询
【发布时间】:2013-07-16 00:24:56
【问题描述】:

我正在使用 SignalR 2.0 测试版。在 Chrome、Firefox 和 IE10 中,我看到使用的传输始终是 longPolling。

http://localhost:8080/signalr/poll?transport=longPolling&connectionToken=123456

我正在从 Windows 服务运行集线器,并有 javascript 集线器代理作为客户端建立连接。

服务器端代码:

WebApp.Start<StartUp>("http://*:8080");

public class StartUp
{
    public void Configuration(IAppBuilder app)
    {
        var config = new HubConfiguration { EnableCrossDomain = true };
        app.MapHubs(config);
    }
}

客户端代码:

function configureMessaging() {

var connectionMain = $.hubConnection('http://localhost:8080');
connectionMain.stateChanged(connectionStateChanged);
connectionMain.start({ waitForPageLoad: false, xdomain: false, jsonp: false });

var vmgrHub = connectionMain.createHubProxy("vmgrHub");

$("#broadcast").click(function () {
    vmgrHub.invoke('globalMessage', $("#msg").val());
});

vmgrHub.on('addGlobalMessage', function (message) {
    $("#message").text(message);
}); }

在生产中,应用程序需要跨域支持,但在提供的示例中,Windows 服务和 javascript 客户端位于本地主机上。

如何让 WebSockets 在支持它的浏览器中工作?

谢谢!

【问题讨论】:

  • 您的应用程序是托管在 windows server 2012 还是 windows 8 上?
  • SignalR w/ Web Sockets 的可能重复项
  • Windows 服务在 Windows 2008 R2 中运行。这也是我的开发环境。

标签: c# websocket signalr long-polling


【解决方案1】:

来自SignalR Supported Platforms

另请注意,SignalR 使用 WebSockets、IIS 8 或 IIS 8 Express 必须使用,并且服务器必须使用 Windows 8、Windows Server 2012 年或更晚。

【讨论】:

  • 好的,我想就是这样。我将设置一个 2012 年的 VM 来证明这一点……但是,我不确定为什么在操作系统级别需要 WebSockets。 IIS8 有意义,但我没有使用 IIS。
  • 使用 Owin/Katana 部分的自托管仍然需要用于 WebSockets 的 Windows Server 2012,因为依赖于操作系统中 HTTP.SYS 的版本。 IIS 和自托管都使用 HTTP.SYS,直到 Windows Server 2012 才支持 WebSockets。
  • 有道理...我刚刚设置了一个 2012 实例,并找到了安装 Websockets 的功能... Web 服务器 (IIS) > Web 服务器 > 应用程序开发 > Web Socket 协议。
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 2013-05-30
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多