Pusher vs Pubnub vs open source Socket.io / SignalR.net / Faye / jWebSocket [closed]
I'm evaluating Pusher and PubNub at the moment to enable bi-directional realtime communications between my primarily web clients and my servers. Both look impressive, with Pusher's docs seeming to be better, and PubNub's scalability and reliability clearly a strong point for them.
However, as I am managing a budget, I am concerned that Pusher & PubNub costs may become an issue for us, and am therefore considering using one of the open source alternatives out there - I've looked primarily at Socket.io, Faye and jWebSocket.
I have my concerns though running the service myself though:
- Has anyone actually scaled a Socket.io or other open source solution to multiple servers before? PubNub claim to deal with 1M messages a second!, I somewhat doubt Socket.io could do that without an unfathomable number of servers, if it would work at all.
- Are there features in the paid services that I am likely going to miss down the line should I go with the open source solutions?
- Is latency really going to be a concern if I have my server on AWS anyway? PubNub are in multiple locations so I expect this should reduce latency although if a message needs to be sent from the US to Japan, having a server in Japan wouldn't help with latency as it still needs to travel there one way or another.
Thanks for the advice.
Solution 1:
Faye using Node.js was very easy to set up for me and initially performed very well in testing. However even though the load on my App is only about 10 requests per second with around 3000 open connections - when I switched it to live node.js cpu usage was pinned at 100% (1 core out of 8 available on my box). I was a little disappointed by this and was expecting more.
I considered using redis or running more than one instance of node on different ports and then splitting the load at my application end but looking at PubNub's prices it seemed much easier to just offload all this to them.
After trying both Pusher and PubNub I found PubNub to be both cheaper and much lower latency for me too (I am hosted in Singapore and while Pusher was ~500ms for me PubNub was ~250ms roundtrip for me from my application). If you are hosted in the US however the difference would probably be much less.
I also looked at Ape-Server but didn't find any good tutorials/documentation for setting up a Publish/subscribe model so skipped it - but maybe you are smarter than me and will have better experience :)