【发布时间】:2011-09-17 18:46:11
【问题描述】:
我想开发一个近乎实时的基于网络的聊天系统。关于如何通过 jQuery 实现此功能的任何建议、需要注意的任何问题以及我一直在阅读的 Comet 是什么?
理想情况下,我希望最多支持大约 5,000 个并发聊天。
【问题讨论】:
我想开发一个近乎实时的基于网络的聊天系统。关于如何通过 jQuery 实现此功能的任何建议、需要注意的任何问题以及我一直在阅读的 Comet 是什么?
理想情况下,我希望最多支持大约 5,000 个并发聊天。
【问题讨论】:
Comet,也称为 Ajax Push,通常被称为“反向 AJAX”。不是定期从服务器中提取信息,而是在需要时将数据从服务器推送到浏览器。这需要一个开放的连接,有几种实现方式。
我建议您使用APE。这是一个演示:http://www.ape-project.org/demos/1/ape-real-time-chat.html
【讨论】:
Comet 是一种“推送”技术,旨在避免客户端(javascript 代码)不断地轮询服务器。这可能会导致带宽问题,因为您必须创建(可能)一个新的 TCP 连接,然后联系 http 服务器,他运行一些服务器端逻辑,然后向客户端发送响应。使用 Comet,如果服务器决定您应该接收一些信息(例如,新的聊天消息),他会直接将其发送给客户端。
有几种不同的实现,你可以有一个开始here。
最简单的实现技术是隐藏 iframe,但我会推荐长轮询,它更可控。
还有一件事,看看HTML5 websokets,这可能是解决您问题的有趣方法(无论如何,与当前浏览器不太兼容)
【讨论】:
查看 Node.js 和 nowjs 以获取 node.js。 Node.js 可以帮助您使用服务器端 JavaScript 构建非常高效的服务器,而 nowjs 是一个允许您构建实时 Web 应用程序的库。甚至还有一个示例屏幕截图,它用 12 行代码将一个基本的聊天应用程序组合在一起。
您还可以查看Socket.io,这是另一个节点库,它通过抽象出不同的传输机制并为您提供统一的代码接口来帮助您构建实时应用程序(支持 WebSockets、Flash Sockets、AJAX 长轮询、JSONP 轮询和永远的 IFrame)。
我知道您标记了您的问题 PHP,但是如果您正在认真考虑以最少的努力(相对而言)编写一个可扩展的系统,那么学习 Node.js 是值得您花时间的(而且学习曲线并不陡峭,因为您可能已经知道 JS)。
【讨论】: