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

目前我正在评估 Pusher 和 PubNub,以便在主要的 Web 客户端和服务器之间实现双向实时通信。两者看起来都令人印象深刻,Pusher 的文档似乎更好,PubNub 的可伸缩性和可靠性显然是它们的强项。

然而,在我管理预算的时候,我担心 Pusher & PubNub 的成本可能会成为我们的一个问题,因此我正在考虑使用一个开源的替代品——我主要关注了 Socket.io、 Faye 和 jWebSocket。

不过,尽管我自己运营这项服务,我还是有自己的顾虑:

  • 之前有人真正将 Socket.io 或其他开源解决方案扩展到多个服务器吗?PubNub 声称可以处理 每秒1M 消息!,我有点怀疑 Socket.io 能否在没有数量难以估量的服务器的情况下做到这一点,如果它可以工作的话。
  • 如果我选择开源解决方案,付费服务中是否有我可能会错过的特性?
  • 如果我的服务器在 AWS 上,延迟真的会成为一个问题吗?PubNub 位于多个地点,所以我认为这应该可以减少延迟,尽管如果一条消息需要从美国发送到日本,在日本拥有一个服务器不会有助于延迟,因为它仍然需要以这样或那样的方式旅行到那里。

谢谢你的建议。

35343 次浏览

Faye 使用 Node.js 对我来说非常容易设置,并且最初在测试中表现得非常好。然而,即使我的应用程序上的负载只有大约每秒10个请求和大约3000个打开的连接-当我把它切换到 live node.js 的 CPU 使用被固定在100% (在我的机器上8个可用的核心中有1个)。我对此有点失望,并期待更多。

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

在尝试了 Pusher 和 PubNub 之后,我发现 PubNub 对我来说既便宜又低延迟(我在新加坡托管,而 Pusher 对我来说是500ms,而 PubNub 对我来说是250ms)。不过,如果你是在美国托管,差别可能会小得多。

我还查看了 Ape-Server,但没有找到任何关于设置发布/订阅模型的好教程/文档,所以跳过了它——但也许你比我聪明,会有更好的体验:)