12

当前项目设置

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

setTimeout(function() { listenForIncomingChat() }, 500);
setTimeout(function() { checkForIncomingMessages( ...params... ) }, 500);

...这样做setTimeout()可以确保这些功能始终运行。根据我打开的聊天窗口的数量,Firebug 的控制台可能会因为POSTs 到服务器而发疯 :)

显然这确实效率低下,但这是我可以让事情正常工作的唯一方法。现在我正在寻找方法让它变得更好,正确地做到这一点!

有些研究

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

根据 Wikipedia,有几种使用 Comet 风格进行开发的方法:流式处理(隐藏 iFrame、XMLHttpRequest)或带有长轮询的 AJAX(XMLHttpRequest、Script 标签)。但是,我对此一无所知。我还阅读了有关AJAX 推送引擎 (APE)的信息,它看起来很酷,但我暂时不想使用第三方。

我最近偶然发现了WebChat 2.0,所以我将查看源代码以尝试了解它是如何工作的。

关于问题

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

4

1 回答 1

9

这是一个使用 node.js 的聊天室示例,源代码在这里

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

于 2010-07-09T17:01:41.443 回答