适用于现场网络聊天应用程序的正确工具

时间:2013-02-16 17:23:49

标签: php node.js knockout.js websocket socket.io

我正在创建应该成为我网站一部分的实时聊天应用程序。网站完全使用PHP开发。现在的问题是,我将陷入两难境地,这将是最适合实时聊天应用程序平台的工具,它将成为我网站的一部分。它应该使用我网站上的用户并与PHP应用程序共享Session。

我做了一些研究,正如我所想 - PHP + Apache并不是开发基于Web套接字的应用程序的最佳工具,就像我的实时聊天一样。像Node.js这样的其他平台看起来是正确的选择,但我不确定让Node与我的PHP应用程序共享资源是多么容易。

我很感兴趣你会在这种情况下使用什么方法?您将实施哪种系统架构?

最后我想告诉你我的PHP网站是基于MySQL的,我正在使用knockoutJS进行客户端实现。它将在客户端使用SocketIO,因为它具有后备策略和对非HTML5浏览器的支持。我知道它也可以在服务器端使用,但我怀疑它和Node或其他一些目前我不知道的解决方案。这就是我在这里问这个问题的主要原因。它将在共享主机上运行的可能性很小,但我完全理解共享主机和套接字连接的问题(关闭端口,没有用于安装节点的SSH等)。如果您对此可能性有任何建议 - 请将其写下来。否则只要忘记它并回答它将在VPS上运行。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您计划使用node.js,那么有一些解决方案可以帮助将node.js集成到您现有的php环境中。 (例如Sharing PHP sessions with node.js)节点与apache不兼容,所以你可能想要切换到Nginx和PHP-fpm。

就个人来说,只需一个简单的“聊天”应用程序就可以“运行”,这是一个很好的变化。我可能会考虑整合已经开发的解决方案Comet Chat。或者如果我想让它更加自定义,我会在单独的平台上构建使用现有架构的东西。 Firebase是一个非常棒的服务,它刚刚出现,看起来完全符合您的需求。如果这对您的用户来说是一个很好的解决方案,那么我会在Node.JS中实现自定义内置的工作。

内部解决方案将从评估服务器的需求开始。您期望多少并发连接?您是否可以控制低级操作系统功能。打开套接字和打开文件限制似乎是共享主机方案的主要限制因素。因此,您可能需要评估不同的托管计划。 Node& S的一个好的PaaS解决方案PHP是AppFog。 Appfog最多可免费提供2GB和10个实例,这可能有助于您入门。如果你想要完全控制,我会建议一个专用的服务器,或者像amazon AWS这样的东西。

然后您需要评估您的架构。就像我说的那样,Nginx在如何为PHP和node.js提供服务方面表现相当不错,但是还有更多选项可以更好地满足您的需求。

查看和开始学习的好地方是Ballons.io的源代码。这是一个写得很好的开源聊天,它利用了redis,这是PHP和node.js之间会话管理的通用解决方案。最重要的是,您可以在AppFog上构建源代码,并在几分钟内测试一些内部解决方案和代码,而无需任何成本!

祝你好运!