8

我需要创建一个像 facebook 聊天这样的聊天。

使用 Comet,我需要更多内存来保持连接。

使用 Ajax 轮询时,如果我每 3-4 秒发送一次请求,就会出现延迟问题。

所以...如果延迟(3-4 秒)无关紧要,Ajax 轮询是否更适合我的情况?

4

3 回答 3

6

延迟不是唯一的问题。COMET(长轮询)“节省”您的流量 - 当您使用轮询时,您无法知道服务器是否发生了变化,因此某些调用可能只是浪费流量和资源(例如,即使没有人聊天时,您每 3-4 秒打一次电话)。在 COMET 的情况下,您通常只需调用一次即可从服务器获取更新(命中率 100%)。

于 2010-06-07T12:29:43.683 回答
2

@Vasil:“你可以保持数百万个打开的连接”

看看这个问题

以及关于NIO 优于 IO的虚假优势

iobound 的文章只是显示 IO 优于 NIO 并且是的 IO 在 NIO 之前内存不足(顺便说一下,作者没有尝试以较低的值减少堆栈内存)。

于 2011-01-17T14:52:09.123 回答
1

如果延迟不是问题,那么 AJAX 可能会更好。如果您不是非常非常小心,Comet 可能会遇到维护同一客户端/服务器对之间的多个连接的问题。(参考)

于 2010-06-04T15:06:17.187 回答