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

标签 ajax chat comet polling

当前项目设置

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

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

... 这样做 setTimeout()确保这些功能始终在运行。取决于我打开了多少聊天窗口,Firebug 的控制台可能会因为 POST 而变得疯狂。 s 到服务器:)

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

有些研究

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

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

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

关于问题

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

最佳答案

Here's使用 node.js 的聊天室示例,源代码 here .

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

关于ajax - 走出这个世界 Comet 编程和基于网络的聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3214877/

相关文章:

jquery - 错误 : No 'Access-Control-Allow-Origin' header is present on the requested resource. 来源 'http://localhost:8000' 因此不允许访问

javascript - 通过 html 表单和 jquery 的 CouchDB 文档附件

php+socket.io+mysql - 像聊天一样的 Messenger

android - 聊天应用程序的服务器端应该是什么?

java - 如何将atmosphere-spade-server与atmosphere-pubsub.war结合使用

javascript - 在 Joomla 1.5 中使用 json_encode 调用从 ajax 获取响应

c# - 在c#中使用后端的跨平台聊天应用程序的方法

javascript - node.js 返回客户端等待事件

javascript - 使用 ajax/setInterval 伪造推送通知?

php - 从 jQuery UI 对话框进行 AJAX 调用