0

我一直在考虑创建一个聊天应用程序,但对如何创建一个有效的应用程序不太了解,所以我希望我们可以讨论制作一个“最佳”和最有效(性能)的方法。

因此,基本功能可能是查看彼此的消息和聊天记录。

所以我正在考虑使用 codeigniter 和 ajax 来创建每个消息的视图和发送,并且每次发送消息时,消息都会在聊天日志的表中进行排序。然后我想,如果每次发送消息时都发送查询,那么这个应用程序的缩放将是可怕的,所以我正在考虑将日志存储在客户端的 cookie 或 javascript 对象中,并在离开聊天时发送日志并存储在数据库中。但是我不知道这是否可行,或者在安全方面会非常糟糕。

另外,我在 stackoverflow 上阅读有关聊天和 websockets 的内容,并在 ajax APE 中运行,作为管理发送消息的有效方法......但我对 websockets 以及如何使用它们等知之甚少......

无论如何,我很确定我可以制作一个聊天应用程序,但是一个好的、有效的、可扩展的,不......

关于制作聊天应用程序的最佳/最有效方式的任何建议?

你们中的一些人建议使用 node.js 或 socket.io。

由于我对这两个一无所知,所以哪个更好?

我还注意到,在 node.js 示例中,他为整个聊天室使用一台服务器,这是否意味着我需要为每个聊天/聊天室使用 node.js 服务器?

4

3 回答 3

2

即使您正在考虑使用 PHP 和 AJAX 构建它,我强烈建议您使用Node.js执行类似的操作,如果这是您的选择的话。它更适合这样的事情;特别是与使用与 Node.js 相关的昂贵 HTTP 请求的 AJAX 相比,它的一大好处是它在执行多种 I/O 时速度非常快并且是异步的。此外,Node.js 进程是非阻塞的,这有助于使其更快。

你也应该看看这个例子。代码是由 Node.js 的创建者自己编写的。此外,Node.js 可以与数据库交互,因此您不需要使用基于文本的日志或任何东西。

如果您对 WebSockets 感兴趣,但不想处理所有跨浏览器的怪癖,请务必查看Socket.IO。这是一个使用 WebSockets 的库,我发现它非常擅长处理所有不同的浏览器版本。

希望有帮助!

于 2011-08-18T18:33:57.180 回答
2

node.jssocket.io似乎最适合这项任务。

node.js 允许以低内存使用处理许多持久连接,这非常适合处理所有聊天客户端。socket.io 是对 websockets/comet/long-polling 的抽象,它允许在节点服务器和 Web 浏览器之间传递消息。

您仍然可以为用户界面使用 codeigniter 或任何其他框架。

于 2011-08-18T18:34:23.557 回答
1

如果您真的要大做强核,您可能需要考虑将数据库替换为消息队列。Second Life 对游戏内消息进行了消息队列评估。

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

虽然,聊天日志不太可能像使用数据库那样持久保存在您的服务器上。

于 2011-08-18T18:50:06.413 回答