我正在考虑为我的 Web 应用程序实时将数据从服务器推送到客户端的几个选项。
我已经实现了一个基于轮询的应用程序(每个客户端每 30 秒后向服务器发送一次 http 请求。)应用程序在 10 个用户进入后实际上并没有扩大。这个应用程序。使用 MySQL、PHP、HTML 和 jQuery 构建。
考虑到以下要求,请建议哪一个更好 - APE Vs node.js
- 一次应该能够处理至少 400 个并发连接
- 服务器应该能够将数据推送到所有这些客户端。
- 客户端将在彼此之间发送数据。
我强烈建议你看看Socket.IO。它是一个完整的服务器推送解决方案,包括服务器端库(用 node.js 编写)和以跨浏览器方式制作的客户端 JS 库。我认为你没有理由实现你自己的代码来做已经制作、工作和测试的事情。
socket.IO 不会处理的唯一情况是您的第三个请求,但无论如何这是不可能的。如果我理解正确,您希望两个客户端在没有第三方服务器帮助的情况下进行通信?您不能将 HTTP 更改为 P2P,至少现在不能。
另一方面,如果您打算通过您的服务器与两个用户进行通信(进行类似私人两人聊天的操作),那么使用 socket.io 是完全可行的。
尽管现在每个人都在使用 node.js,但我们做了一个基于APE的聊天应用程序,我们对此非常满意。
APE 提供了您正在寻找的“开箱即用”的东西,因为它是服务器端 JS 和客户端框架 APE_JSF 的组合,它提供了您从 socket.io 获得的功能(以及更多)。
在这个项目中,我们使用实时消息处理约 9000 个并发用户。一个 nginx 服务器放在 APE 前面,以提供 deflate/gzip 支持
即使在“不那么高端”的机器上,这种配置(也没有 nginx)也可以满足您的要求。
由于您可以将数据推送到“一个频道”或单个用户,因此您应该能够通过 APE 准确地实现您正在寻找的内容,从广播到直接消息。
如果您在现有堆栈中使用 Apache,那么正如您已经说过的,即使您使用长轮询而不是连续轮询,在扩展用户时也会出现问题。解决方案可能是使用像nginx这样的高性能 Web 服务器来处理许多并发连接。
另一方面,node.js 是为这种连接并发而设计的,并且有一些包,比如socket.io,它可以让你的开发人员生活更轻松,因为它提供了各种传输选项以及备用解决方案和其他有用的功能。
我不推荐 ape 用于大型应用程序,它对于聊天应用程序来说还不错,但就海量数据传输而言,客户端的浏览器在一段时间后开始变慢并崩溃。