What matters most is total connection count, which appears to be very high. At 6,000 open connections on a free dyno, that is better than Pusher's $199/mo plan: http://pusher.com/pricing
I think what needs to be done after this is checking how much data can be sent per second. Both in terms of raw bandwidth and messages/sec.
I haven't deployed it to Heroku yet, but if somebody does please let me know how it goes!
These are on the list :)
If so, it seems that neither option is very respectful of mobile users' battery life...
It'd be interesting to see the trade-offs between web sockets and persistent polling.
The reason being mainly the session negotiation and teardown required for making multiple requests, and the fact that the antenna required a higher energy state for creating a new connection compared to keeping an existing connection open.
If you're getting 160 users connecting per second the 6000 concurrent connection limit will be hit in less than a minute, assuming most users stay on the page for longer than a minute.
I couldn't find this info in the pricing page.
If you're trying to maximize your free dyno usage, however, you might want to use the 'heroku scheduler' addon, and have it ping your app once every 10 minutes to keep it 'awake'.
Also, I used pingdom.com once to make sure that my "very low in traffic" app never sleeps, but any solution that performs a request in this interval would be valid
Having root access to the machine would allow you to optimise some things and probably raise those numbers, but then you don't get the convenience of using Heroku.