Socket.io和ajax请求到php页面

时间:2012-03-08 04:33:41

标签: php node.js socket.io

我正在设置一个将使用socket.io的实时应用。目前在php中有一些核心功能,它使用了memcache和mysql后端。

在socket.io服务器中执行ajax请求(如果可能的话)到处理此问题的php页面是否有意义?有很多MySQL查询,我知道它可以在node.js中完成,但如果可能的话,我宁愿在php中保留这部分。

所以,我的问题是,这是一件正确的事吗?从socket.io服务器中调用php页面然后返回客户端?

谢谢!

2 个答案:

答案 0 :(得分:4)

我没有看到让你的node.js应用程序与你的PHP应用程序进行通信的任何问题,方法是暴露一个RESTful API或一些你可以从socket.io node.js服务器POST或GET的PHP脚本。有很多npm模块(如request)可以为您轻松提供HTTP请求。在节点应用程序中从PHP检索数据后,可以使用socket.io将数据emit()发送到前端的socket.io客户端。

答案 1 :(得分:0)

这没有错。您只是使用RESTful API来访问MySQL数据,从而隔离数据库详细信息。

如果有一天你厌倦了PHP,你甚至可以轻松切换到Ruby,Python或者无论是那个部分都没有触及node.js.如果您的逻辑已经用PHP编写(您正在升级旧版本的应用程序),那么您可以重用已经过测试和调试过的内容,这样会更有意义。很多人都在倡导系统之间的这种分离。只需看看所有SOA(面向服务的体系结构)的嗡嗡声。

在我工作的地方,我们在一个项目中使用这个非常的架构(虽然在这种情况下它是一个调用Java EE应用程序的ASP.NET MVC网站)并且它非常适合我们。使用node.js的事件模型,它甚至更好,因为你不会阻止等待PHP。

但当然,还有一些缺点

  • 性能开销
  • 架构更复杂
  • 你现在使用两种语言而不是只使用一种语言(虽然javascript和PHP经常一起使用,但我认为在这种情况下它确实不是问题)。

所以你需要问问自己,你的问题是否真的需要这个解决方案。但在很多情况下,答案可能是肯定的。只是不要忘记保持简单和愚蠢的优点(KISS原则)