Javascript Comet VS Ajax轮询

Javascript Comet VS Ajax轮询,javascript,ajax,comet,chat,polling,Javascript,Ajax,Comet,Chat,Polling,我需要创建一个类似facebook聊天的聊天 有了Comet,我需要更多的内存来保持连接 在Ajax轮询中,如果每3-4秒发送一次请求,就会出现延迟问题 所以。。。如果延迟(3-4秒)无关紧要,那么Ajax轮询是否更适合我的情况 如果延迟不是问题,那么AJAX可能更好。如果您不非常小心,Comet在维护同一客户机/服务器对之间的多个连接时可能会遇到问题 延迟不是唯一的问题。COMET(长轮询)“保存”您的流量-当您使用轮询时,您无法知道服务器上是否有更改,因此某些呼叫可能只是浪费流量和资源(例如

我需要创建一个类似facebook聊天的聊天

有了Comet,我需要更多的内存来保持连接

在Ajax轮询中,如果每3-4秒发送一次请求,就会出现延迟问题


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

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

延迟不是唯一的问题。COMET(长轮询)“保存”您的流量-当您使用轮询时,您无法知道服务器上是否有更改,因此某些呼叫可能只是浪费流量和资源(例如,即使没有人聊天,您也会每3-4秒打一次电话)。对于COMET,您通常只需一次呼叫即可从服务器获得更新(命中率为100%)。

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

看一看

关于NIO对IO的影响


iobound文章只是显示IO的性能优于NIO,是的,IO在NIO之前就耗尽了内存(顺便说一句,作者没有尝试用较低的值减少堆栈内存)。

我想你刚才回答了你自己的问题:)但是使用Comet,我需要更多的内存来保持连接的打开。。。不?保持联系本身并没有那么有害。内存消耗更多地取决于您将看到的服务器端IO API—阻塞或非阻塞。如果选择阻塞API,则每个连接将有一个线程->内存问题,其中有3-4k打开的连接。如果您选择非阻塞API(几乎每个应用服务器都有NIO功能),您可以保持数百万个打开的连接。使用comet,如果您正在执行非阻塞io,您不需要太多内存