1

我在一个 Web 应用程序上工作,该应用程序使用长轮询技术从休息服务器获取推送类型更新。

它运行 setTimeout(),它执行一个函数,该函数执行一个 xhr GET 请求,超时时间为 120 秒。它还向服务器发送一个 60 秒的特殊“Accept-Wait”标头,它告诉服务器何时回复 200 并且没有数据给客户端。然后客户端重复此 setTimeout。当客户端“登录”到服务器时,这将永远持续下去。

我有一个使用 Chrome 的用户(他只能使用 Chrome,所以我没有验证这是否可以在其他浏览器中重现,因为没有其他人可以重现这个问题)当他最小化时,GET 请求开始超时。在我的 longpoller 看来,这看起来就像服务器已关闭。

我已经在其余服务器上启用了调试,并确认它在 2 分钟内没有来自该用户的任何内容(似乎表明 GET 请求没有离开浏览器)。我还在 Chrome 终端 (F12) 的“网络”选项卡中看到,请求在 2 分钟后“取消”,表明它们正在超时。使用“localhost”时也会重现此问题,我认为这排除了网络问题。

如何获取有关 Chrome 的更多信息,了解它为什么不让该用户的 http 流量流出?

谢谢

4

1 回答 1

0

如果此问题仅发生在 google chrome 中,可能它正在丢弃您的标签,您可以通过禁用标志来防止它,在地址栏上键入以下 url 并查看它是否已启用:

chrome://flags/#automatic-tab-discarding
于 2016-08-11T14:36:46.230 回答