Pusher vs Pubnub vs开源Socket.io / SignalR.net / Faye / jWebSocket

我现在正在评估Pusher和PubNub,以便在我的主要Web客户端和我的服务器之间启用双向实时通信。 两者看起来都很让人印象深刻,Pusher的文档看起来更好,而PubNub的可扩展性和可靠性显然是他们的强项。

但是,由于我正在pipe理预算,所以我担心Pusher&PubNub成本可能会成为我们的问题,因此我正在考虑使用其中一个开源替代scheme – 我主要关注Socket.io,Faye和jWebSocket。

尽pipe我自己运行这个服务,但是我有我的担忧:

  • 有没有人实际上将Socket.io或其他开源解决scheme扩展到多个服务器之前? PubNub宣称每秒处理1M条消息! ,我有些怀疑Socket.io可以做到这一点,没有难以理解的数量的服务器,如果它可以工作。
  • 如果我使用开源解决scheme,那么在付费服务中是否有可能会错过该行的function?
  • 无论如何,如果我在AWS上有我的服务器,延迟真的会成为一个问题吗? PubNub位于多个地点,所以我希望这可以减less延迟,尽pipe如果消息需要从美国发送到日本,那么在日本有一台服务器将不会帮助延迟,因为它仍然需要以这样或那样的方式去旅行。

感谢您的build议。

使用Node.js的Faye非常容易为我设置,并且最初在testing中performance得非常好。 然而,即使我的应用程序的负载只有大约每秒10个请求,打开大约3000个连接 – 当我切换到活node.js cpu的使用率被固定为100%(我的盒子上有8个可用的核心)。 我有点失望,期待更多。

我考虑过使用redis或者在不同的端口上运行多个节点的实例,然后在应用程序端分割负载,但是看看PubNub的价格,把所有这些分配给它们看起来要容易得多。

在尝试了Pusher和PubNub之后,我发现PubNub既便宜又低得多(我在新加坡托pipe,Pusher为500毫秒,PubNub距离我的应用程序为250ms往返)。 如果你在美国托pipe,但差异可能会小得多。

我也看了猿服务器,但没有find任何好的教程/文档设置发布/订阅模型,所以跳过它 – 但也许你比我聪明,将有更好的经验:)