C# 信号器行为:防止长轮询

C# 信号器行为:防止长轮询,c#,asp.net-mvc,signalr,signalr-hub,signalr.client,C#,Asp.net Mvc,Signalr,Signalr Hub,Signalr.client,我想在我的web应用程序mvc中使用SignalR 场景:我的用户给我输入,我处理它并向他们展示结果。 这个过程可能会很长。多长时间假设3分钟,具体取决于网络流量、使用情况,…-无法断言。 目前,我正在AJAX中进行长轮询请求。当AJAX运行时,我在屏幕上显示:请稍候 现在,我在这个场景中添加了一个新的服务器限制:因为我正在使用,所以它们限制我每个请求所需时间必须少于100秒。否则,它们将中止请求 所以,我考虑了一下,决定选择进入信号机。为什么?因为信号员可以帮我处理这么长时间的轮询。而且大多使

我想在我的web应用程序mvc中使用SignalR

场景:我的用户给我输入,我处理它并向他们展示结果。 这个过程可能会很长。多长时间假设3分钟,具体取决于网络流量、使用情况,…-无法断言。 目前,我正在AJAX中进行长轮询请求。当AJAX运行时,我在屏幕上显示:请稍候

现在,我在这个场景中添加了一个新的服务器限制:因为我正在使用,所以它们限制我每个请求所需时间必须少于100秒。否则,它们将中止请求

所以,我考虑了一下,决定选择进入信号机。为什么?因为信号员可以帮我处理这么长时间的轮询。而且大多使用另一种方法,如套接字或其他技术,这可以避免100秒服务器限制

我在Signal网站上看到,他们正在检查客户端功能,并决定使用哪种技术

我的担忧:由于CloudFlare将请求\响应限制在100秒,这可能会给信号器带来问题。假设“我的客户机”是没有任何新web功能(如WebSocket或其他)的客户机。这可能导致信号器进行长时间轮询,这可能会失败

是否可以定义信号器以避免长时间轮询? 或
您建议如何避免这种问题。

Signal允许您配置服务器保持长轮询请求打开的最长时间

默认情况下,信号服务器将关闭已打开110秒但未接收消息的轮询请求。当然,如果消息在110秒之前发送到客户端,则在发送消息时轮询请求将关闭。在这两种情况下,当服务器关闭上一次轮询时,SignalR客户端将重新轮询,否则轮询时间不会太长

在应用程序启动期间,您可以使用以下方法降低110秒的默认超时:


SignalR允许您配置服务器保持长轮询请求打开的最长时间

默认情况下,信号服务器将关闭已打开110秒但未接收消息的轮询请求。当然,如果消息在110秒之前发送到客户端,则在发送消息时轮询请求将关闭。在这两种情况下,当服务器关闭上一次轮询时,SignalR客户端将重新轮询,否则轮询时间不会太长

在应用程序启动期间,您可以使用以下方法降低110秒的默认超时:


一个好的起点是。一个好的起点是。
// Make long polling connections wait a maximum of 60 seconds for a
// response. When that time expires, trigger a timeout command and
// make the client reconnect.
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(60);