1

我正在使用长轮询 AJAX 和 Apache/PHP 实现 Comet。问题是,如果在(我不知道的)一段时间内没有交互,即没有发送/接收数据,然后过了一段时间,我发送了一个事件,客户端长轮询请求保持挂起,没有接收新数据。有时客户端收到超时并重新连接,但有时它什么也没收到,正如我已经说过的,请求一直处于未决状态。我正在按照此处的指示实施它与彗星实现本身无关的一些更改(即:使用数据库而不是文件)。它在服务器端使用循环等待新事件,并且似乎服务器超时关闭连接但客户端没有收到连接关闭以重新连接。我怎样才能避免这个问题?该解决方案是否会使用客户端计时器进行重新连接?

4

1 回答 1

1

您永远不需要等待超过 50 秒来发送响应,否则浏览器可能会超时。基本上,如果 50 秒后没有新的报告,无论如何都要发送响应。这个空响应将触发客户端向服务器发送新请求并重新开始。

于 2012-05-11T19:35:33.527 回答