Ajax推送引擎(APE)与Node.js

我正在考虑几个选项来实时将数据从服务器推送到我的Web应用程序的客户端。

我已经实现了基于轮询(每个客户端发送http请求到服务器每30秒后)应用程序,真正不能扩大10个用户后,这个程序。 是使用MySQL,PHP,HTML和jQuery构build的。

请build议考虑下面的要求哪一个更好 – APE Vs node.js

  1. 应该能够一次处理至less400个并发连接
  2. 服务器应该能够将数据推送到所有这些客户端。
  3. 客户端将在彼此之间发送数据。

我强烈build议你看看Socket.IO 。 这是一个完整的服务器推送解决scheme,包括服务器端库(用node.js编写)和用跨浏览器方式编写的客户端JS库。 我看不出有什么理由让你执行自己的代码来完成已经完成的工作和testing。

socket.IO不能处理的唯一情况是你的第三个请求,但这是不可能的。 如果我正确地理解了你,你希望两个客户端在没有第三方服务器的帮助下进行交stream? 你不能把HTTP转换成P2P,至less现在不行。

另一方面,如果你打算通过你的服务器来通信两个用户(做一些私人的双人聊天),那么使用socket.io是完全可行的。

尽pipe现在每个人都在向node.js跑,我们却基于APE做了一个聊天应用程序,我们对此非常满意。

由于APE是服务器端JS和一个客户端框架APE_JSF的组合,APE提供了您所需要的“开箱即用”,它提供了从socket.io获得的function(以及更多)。

在这个项目中,我们处理约9000个具有实时消息的并发用户 。 一个nginx服务器放在APE前面,提供deflate / gzip支持

这种configuration(没有nginx)也不会遇到任何问题,即使是在“不太高端”的机器上。

由于您可以将数据推送到“频道”或单个用户,因此您应该能够从广播到直接消息,实现APE所要查找的内容。

如果您在现有的堆栈中使用Apache,那么正如您所说的那样,即使使用长轮询而不是连续轮询 ,您的用户扩展也会出现问题。 解决scheme可能是使用像nginx这样的高性能Web服务器来处理多个并发连接。

另一方面,node.js是为这种连接并发性而devise的,并且有一些包,比如socket.io ,它可以使开发人员的生活变得更容易,因为它提供了各种带有后备解决scheme和其他有用function的传输选项。

我不会推荐大型应用程序的猿,它只适用于聊天应用程序,但就海量的数据传输相关的客户端浏览器开始减速和粉碎一段时间后。