There is nothing free about managing and supporting a complex infrastructure component.<p>When you're building out an already sophisticated application, and your core user value proposition has nothing to do with providing subscribed socket connections then it is suddenly a real joy to pay real money to a competent vendor that takes responsibility for something that is hard to get right.<p>Tech startups are 10% software and 90% running a business. Pusher helps me run my business.
For what its worth: if you want to have your own pusher, you can use Slanger.<p><a href="https://github.com/stevegraham/slanger" rel="nofollow">https://github.com/stevegraham/slanger</a><p>It works with most (if not all) pusher libs and is rather convenient (except the "run on your own infrastructure" part).
Nice work.<p>To be fair, you should list the things it can't do that Pusher can before you advise people to forget it. It looks like node-puller:<p>* Doesn't scale<p>* Doesn't have authentication<p>* Doesn't have private channels<p>* Can't do presence
Kudos for sharing this and showing how easy it is to use node.js and socket.io (for those who haven't tried out socket.io, you really should) I implemented something similar for my side project recently, but instead of using an HTTP end point, I used redis and it's in built pub/sub layer. Pushing events is then a simple matter of publishing messages on redis channels. My node.js code listens to these redis channels and pushes the events upstream to the browsers via websockets, exactly as you do.<p>Another thing I'd suggest you to highlight (or rather warn) is your use of eval. In the use cases you've mentioned (message board or chat room), you're essentially going to eval user input. Any attacker who knows this will most definitely try to perform XSS.
Congratulations on a cool project!<p>There seem to be a lot of people here who are wondering why you bothered doing this instead of buying/renting/paying for some other solution. I'd suggest quietly acknowledging their points, and then going back to working on cool things.<p>Be an engineer. Be a problem-solver. Be a thinker. Don't worry about some magical valuation of your time and how learning to roll-your-own is just cowboy development--that's bullshit the suits will feed you to try and make you reliant on their capital. Do the hard things, and you'll go far.<p>(oh, and look into em-websockets...some cool stuff there if you don't want to mess with a full Rails deployment)