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

Mat*_*dan 71 signals websocket socket.io pubnub ably-realtime

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

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

尽管我自己运行服务,但我有自己的顾虑:

  • 有没有人之前实际上将Socket.io或其他开源解决方案扩展到多个服务器?PubNub声称每秒处理1M消息!,我有点怀疑Socket.io可以做到这一点,没有一个不可思议的服务器数量,如果它可以工作.
  • 如果我使用开源解决方案,我可能会错过付费服务中的功能吗?
  • 如果我在AWS上拥有我的服务器,延迟真的会成为一个问题吗?PubNub位于多个位置,所以我希望这可以减少延迟,尽管如果需要从美国发送消息到日本,在日本拥有服务器将无助于延迟,因为它仍然需要以某种方式在那里旅行.

感谢您的建议.

小智 21

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

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

在尝试了Pusher和PubNub之后,我发现PubNub对我来说既便宜又低得多(我在新加坡主持,而Pusher对我来说约为500毫秒,PubNub从我的应用程序中为我提供了约250毫秒的往返).如果您在美国托管,但差异可能会小得多.

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

  • 你什么意思"当我把它切换到live node.js"时?你的意思是将它移动到生产服务器?服务器是共享主机方案吗?在AWS?有什么规格?此外,每秒10个请求,是一个发布者和3000个订阅者?所以从本质上说,你在一秒钟内发送了30,000条消息?如果是这样听起来对我来说对于一个核心来说真是太好了,我希望它会被钉住.请澄清您的测试方法.谢谢. (18认同)