走出这个世界的Comet编程和基于网络的聊天

Hri*_*sto 12 ajax chat comet polling

当前的项目设置

我一直在进行基于网络的聊天,类似于Facebook聊天.在当前状态下,我会监听传入聊天并检查现有聊天中的新消息是做...

setTimeout(function() { listenForIncomingChat() }, 500);
setTimeout(function() { checkForIncomingMessages( ...params... ) }, 500);
Run Code Online (Sandbox Code Playgroud)

...这样做setTimeout()确保这些功能始终在运行.根据我打开的聊天窗口的数量,Firebug的控制台可能会疯狂地使用POSTs到服务器:)

显然这是非常低效的,但这是我能让事情发挥作用的唯一方式.现在我正在寻找让它变得更好的方法,正确地做到这一点!

有些研究

现在,我听说过Comet Programming,这是与服务器打开长期HTTP连接的方法,但我不熟悉Comet背后的技术或思想.用于HTML5的WebSockets可能更好,但由于没有全面展开,也不是所有浏览器都支持,我会坚持使用的方法.

根据维基百科,有几种使用Comet风格开发的方法:Streaming(隐藏的iFrame,XMLHttpRequest)或带有长轮询的AJAX(XMLHttpRequest,Script标签).但是,我对此一无所知.我也读过有关AJAX推送引擎(APE)的内容,看起来很酷,但我暂时不想使用第三方.

我最近偶然发现了WebChat 2.0,所以我将通过源代码来查看它是如何工作的.

关于问题

那么在哪里可以找到有关如何开始使用此类项目的示例代码/教程?我如何实施Comet技术?如何设置与服务器的长期HTTP连接?

med*_*iev 9

下面是如何使用Node.js,源代码聊天室的例子在这里.

我相信客户端使用轮询,但这个例子很有趣,因为服务器端也在JS中,而node.js对于这种类型的东西是有效的.