【发布时间】:2015-12-26 07:07:36
【问题描述】:
我需要在 javascript 客户端和 Web API 控制器操作之间建立长时间运行(比如 10 分钟)的连接。 Web 应用的 Azure 负载均衡器的默认超时时间为 4 分钟,目前无法配置。
如何通过发送 tcp keep-alive 数据包来保持连接?
这可以在客户端、服务器端还是两者兼而有之?
对于 .NET,我只能找到此选项
ServicePoint.SetTcpKeepAlive,但它似乎仅限于应用程序作为客户端发出请求的 HttpWebRequest。是否可以通过
XMLHttpRequest从javascript发送keep-alive数据包?
【问题讨论】:
-
你能经常发送一条虚拟消息吗? (您的客户不需要对每一句话都做出回应……)
-
是的,但这会“污染”响应并需要额外的客户端逻辑,不是吗?我研究了 SingalR 和长轮询。可能是唯一的解决方案。
-
这取决于您如何向客户端发送消息,例如 signalR,每条消息都有一个类型,并且只有您绑定侦听器的类型才会触发客户端操作,所以不,不会有额外的逻辑如果您使用事件发射器形状的源,则客户端。在污染方面,我认为保持开放比重新连接更干净,如果程序流看不到保持活动,我看不出有什么危害,Socket.IO和所有大狗都会这样做,如果它让你知道这一点感觉更好......
标签: javascript c# sockets asp.net-web-api keep-alive