讨论:高效的实时聊天应用程序在php


Discussion: Efficient real time chat application in php?

我一直在考虑创建一个聊天应用程序,但不知道如何创建一个有效的,所以我希望我们可以谈谈"最好"和最有效的(性能)的方式来做一个。

所以基本功能可能是看到对方的消息和聊天记录。

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

另外,我在stackoverflow上读了一些关于聊天和websockets的东西,并在ajax APE中运行,作为管理发送消息的有效方法…但是我真的不太了解websockets和如何使用它们等…

无论如何,我很确定我可以做一个聊天应用程序,但一个好的,有效的,可扩展的,没有…

关于制作聊天应用程序的最佳/最有效的方法有什么建议吗?

有些人建议node.js或socket.io.

既然我对这两个一无所知,那哪个更好呢?

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

即使你正在考虑用PHP和AJAX构建这个,我强烈建议用Node.js做这样的事情,如果这是你的选择。它更适合做这样的事情;特别是与使用昂贵的HTTP请求的AJAX相比,Node.js的一个很大的好处是,它在做许多类型的I/O时非常快,而且是异步的。此外,Node.js进程是非阻塞的,这有助于使它更快。

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

如果你对WebSockets感兴趣,但不想处理所有跨浏览器的怪癖,一定要看看Socket.IO。这是一个与WebSockets一起工作的库,我发现它非常擅长处理所有不同的浏览器版本。

希望有帮助!

node.js和socket。IO似乎最适合这个任务。

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

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

如果您真的想要更大,您可能需要考虑替换消息队列的数据库。《第二人生》为游戏内的消息传递提供了消息队列评估。

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

但是,聊天日志不太可能像数据库那样持久化在服务器上。