首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SignalR长轮询传输

SignalR长轮询传输
EN

Stack Overflow用户
提问于 2012-10-20 18:50:06
回答 2查看 23.2K关注 0票数 2

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

代码语言:javascript
复制
$.connection.hub.start({ transport: 'longPolling' }, function () {
    console.log('connected');
});

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

代码语言:javascript
复制
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的日志是这里。来自第一个超时请求的响应:

代码语言:javascript
复制
{"MessageId":"3636","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}

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

代码语言:javascript
复制
{"MessageId":"3641","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}

我希望在这个问题上有任何帮助。谢谢。

编辑

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-20 21:53:48

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

票数 5
EN

Stack Overflow用户

发布于 2021-06-25 09:21:36

长轮询时禁用“保持活动”功能。似乎用的是ConnectionTimeout。

此设置表示在关闭传输连接和打开新连接之前打开并等待响应的时间。默认值为110秒。

https://learn.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/handling-connection-lifetime-events#timeoutkeepalive

如果请求超时,而服务器没有发送任何数据,但您希望它发送,则可能是服务器端出现了一些您尚未看到的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12991597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档