我使用SignalR 0.5.3与集线器和我明确地设定输送到长轮询是这样的:SignalR长轮询传输
$.connection.hub.start({ transport: 'longPolling' }, function() {
console.log('connected');
});
与像这样的结构(在的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);
但是,长轮询在开发(IIS Express)和生产(IIS 7.5)环境中似乎都不起作用。连接似乎是正确的,但长时间轮询请求总是超时(大约2分钟后),然后重新连接。来自IIS的日志是here。从第一个响应超时要求:
{"MessageId":"3636","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}
超时重新连接回应是这样的:
{"MessageId":"3641","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}
我希望关于这个问题的任何帮助。谢谢。
编辑
如果重新连接意味着新的长轮询周期的开始为什么它〜2分钟后,当在的global.asax.cs保持活动设置被设置为15秒启动?与此问题是,我有一个反向代理在IIS前超时25秒后保持活动请求,因此,当达到此反向代理超时时,我得到504响应。
我不确定你描述的是什么问题。超时发生在你没有得到答案时,完全是由设计决定的。有什么问题? – davidfowl
@dfowler:那么重新连接意味着新的长轮询周期的开始?为什么在将KeepAlive设置为15秒后,约2分钟后超时?查看更新的问题。 – yojimbo87
保持活力不适合长时间(它没有意义)。 LongPolling默认等待2分钟,您可以将其扩展为适用于您的环境的任何内容。我仍然不理解问题。你只是问它是如何工作的? – davidfowl