SignalR长轮询运输

yoj*_*o87 2 asp.net long-polling signalr signalr-hub

我正在使用带有集线器的SignalR 0.5.3,我明确地将传输设置为长轮询,如下所示:

$.connection.hub.start({ transport: 'longPolling' }, function () {
    console.log('connected');
});
Run Code Online (Sandbox Code Playgroud)

使用这样的配置(在global.asax.cs Application_Start方法中):

GlobalHost.DependencyResolver.UseRedis(server, port, password, pubsubDB, "FooBar");
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(2);
GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(15);
Run Code Online (Sandbox Code Playgroud)

然而,长期轮询似乎既不适用于开发(IIS express)也不适用于生产(IIS 7.5)环境.连接似乎正常,但长轮询请求总是超时(约2分钟后),之后重新连接.IIS的日志在这里.第一次超时请求的回复:

{"MessageId":"3636","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}
Run Code Online (Sandbox Code Playgroud)

超时重新连接响应如下所示:

{"MessageId":"3641","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}
Run Code Online (Sandbox Code Playgroud)

对于这个问题,我将不胜感激.谢谢.

编辑

如果重新连接意味着新的长轮询周期的开始,为什么在global.asax.cs中的KeepAlive设置设置为15秒后~2分钟后启动?问题在于我在IIS前面有一个反向代理,它在25秒后超时保持活动请求,因此当达到此反向代理超时时,我得到504响应.

Col*_*lin 5

看看这篇文章:信号器如何在内部工作.长拉动的方式是在设定的时间之后连接将超时或接收响应和重新连接(重新连接)