繁体   English   中英

SignalR长轮询传输

[英]SignalR long polling transport

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

$.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的日志在这里 来自第一个超时请求的响应:

{"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}}

对于此问题的任何帮助,我将不胜感激。 谢谢。

编辑

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

看一下这篇文章: signalr在内部如何工作 长时间拉动的方式是在设置的时间后连接将超时或收到响应并重新拉动(重新连接)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM