.net – SignalR长轮询在5秒内断开连接
我的应用程序在公司网络下工作(丑陋的代理和东西).它不能很好地工作.我希望使用https会有所帮助,但事实并非如此.这是我在日志中看到的奇怪模式:
[14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: Client subscribed to hub 'modemshub'. [14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.5&connectionToken=6aktO0sramoQKhQ9DC7Cs7EbXMUou8LooQRxfup4R0oZCHpBmWBFjyLup%2F3wJLloR8GtJEiUk10YOZJBaSqN8aiGAfXRR4G9hujTFTyiJiz%2FyJ4oMlBIdxqeCc5anI6k&connectionData=%5B%7B%22name%22%3A%22modemshub%22%7D%5D'. [14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: longPolling transport starting. [14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: Opening long polling request to 'https://example.com/signalr/connect?transport=longPolling&clientProt…rlCzGHl5kVLClT5ex8&connectionData=%5B%7B%22name%22%3A%22modemshub%22%7D%5D'. [14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: Long poll complete. [14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: LongPolling connected. [14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: longPolling transport connected. Initiating start request. [14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: Opening long polling request to 'https://example.com/signalr/poll?transport=longPolling&clientProtoco…rlCzGHl5kVLClT5ex8&connectionData=%5B%7B%22name%22%3A%22modemshub%22%7D%5D'. [14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: The start request succeeded. Transitioning to the connected state. [14:13:38 GMT+0600 (N. Central Asia Standard Time)] SignalR: Long poll complete. [14:13:38 GMT+0600 (N. Central Asia Standard Time)] SignalR: Stopping connection. [14:13:38 GMT+0600 (N. Central Asia Standard Time)] SignalR: Fired ajax abort async = true. 因此连接建立,5秒后中止(ConnectionTimeout等于110秒).并且这种模式一再重复.那太奇怪了. 解决方法
背景
根据Asp.net:
Troubleshooting请注意,SignalR 2.1引入了保持活动以进行长轮询.如果某些事情干扰了分块的HTTP响应,这可能会有问题.如果要禁用keepalive功能,请将KeepAlive设置为null.长轮询传输会自动禁用Keepalive功能. 如果您是using a Self-Host,请使用以下3 args: GlobalHost.Configuration.ConnectionTimeout = new TimeSpan(0,110); GlobalHost.Configuration.DisconnectTimeout = new TimeSpan(0,30); GlobalHost.Configuration.KeepAlive = new TimeSpan(0,10); 作为支持长时间轮询的保持“喜欢”功能的不同替代方法,请创建服务器方法名称Ping: public class MyHub : Hub { public void Ping() { } } 然后,在客户端上创建一个用于Ping服务器的时间间隔: var proxy = $.connection.myHub,intervalHandle; ... $.connection.hub.disconnected(function() { clearInterval(intervalHandle); }); ... $.connection.hub.start().done(function() { // Only when long polling if($.connection.hub.transport.name === "longPolling") { // Ping every 10s intervalHandle = setInterval(function() { // Ensure we're connected (don't want to be pinging in any other state). if($.connection.hub.state === $.signalR.connectionState.connected) { proxy.server.ping().fail(function() { // Failed to ping the server,we could either try one more time to ensure we can't reach the server // or we could fail right here. TryAndRestartConnection(); // Your method }); } },10000); } }); 我希望有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在维护期间重定向站点访问者
- datetime – 将时间转换为UTC vbScript
- asp.net-mvc-3 – 如何从ASP.NET MVC#输出中删除空格?
- dependency-injection – Ninject:构造函数参数
- asp.net – 使用Linq将单个值返回给SQL
- asp.net-mvc – 在Asp.Net Core中启用基于客户端的文化
- asp.net-mvc – MailDefinition / MailMessage和basepath不
- asp.net-mvc – 如何在MVC3 Razor中禁用DropDownListFor?
- asp.net-mvc – 如何在ASP.NET MVC RC1中返回304状态与File
- asp.net – LINQ to SQL执行时间比SSMS SQL长50倍
- asp.net – 如何在asp:GridView中启用就地编辑?
- telerik – 在向网格添加行时,具有ASP.NET MVC3的
- asp.net-mvc-3 – 如何根据当前页面和/或主页在O
- asp.net-mvc – MVC 2 vs MVC 3自定义验证属性使
- asp.net-mvc-3 – MVC中的SSO(单点登录)
- iis-7 – 经典ASP发送错误到浏览器不能在IIS7上进
- asp.net – .Net的新文件?
- asp.net-mvc – ASP.NET MVC在自定义操作过滤器中
- Repeater排序的三种实现方式(附在线Demo)
- 如何在codenameone中使用ASP.Net wsdl web服务