我正在尝试使用Ajax,PHP,MySql实现群聊(仅群聊)功能。
到目前为止我一直在尝试:
1- Ajax短轮询使用缓存来减少数据库命中数。但它被开发人员的数量拒绝,因为Number http请求 2- Ajax长轮询,这是一个非常好的想法,但即使我使每个ajax请求都是唯一的,它也不能与IE一起工作。
所以请给我一些解决方案,以便我能够在我的项目中实现群聊功能。我愿意接受实施群聊的新建议。
答案 0 :(得分:1)
短暂民意调查的群聊非常低效。这不是真正的实时(几秒钟的延迟,除非你想在每一个实例中击中数据库然后你会伤害系统)
现在使用ajax(短轮询或长轮询)它可能是一个解决方案,但不是一个有效的选择,尤其是在谈论可扩展性时!
新技术node.js将是完美的解决方案。如果您不知道哪个节点,那就相当简单了。想想服务器上的非阻塞io javascript。现在,如果你还不熟悉javascript,我需要一个学习曲线,但我认为你是。其次是这是一个结合了cakephp的php问题,node.js完全取代了。
现在node.js提供了许多类似于Sinatra,Rails和其他一些php替代品的框架。从简单的基于Sinatra的框架到完整堆叠的mvc框架节点都可以实现。
我最近对Express非常感兴趣,这是一个sinatra类型的框架。它提供了自己的视图模板系统“Jade”,但您可以使用您想要的任何其他引擎。该网站提供了一些screencasts,展示了一些示例应用程序和一些显示node.js和Express功能的教程。您可以在极短的时间内编写详细的高级应用程序,因为前端和后端都是用一种语言(javascript)编写的。它还提供了一个不错的html替代标记。
虽然Express只是众多框架中的一个,但我确信你会感兴趣。你可以找到一个stackoverflow问题here。
我确实在github上找到了一个用node.js编写的聊天应用程序,虽然它不再处于活动开发状态,但它仍然是一个很好的资源,可以查看其他人如何实现他们的聊天系统。< / p>
节点的另一个方面是数据库工具。您可以使用无阻塞io架构在节点中主动进行查询。
有很多方法,但问题越有效。需要注意的是,您需要一台支持node.js的服务器,一些新的云服务专门用于节点。一个简单的谷歌搜索可能会找到一些好的。
希望这有帮助, 丹尼尔
编辑:我也忘了提到要进行完全实时聊天,你可以使用socket.io。虽然使用节点的真正原因是因为它意味着在事件驱动的非阻塞io方式中使用。它的占地面积也非常小,因此缩放不是问题。