(Sorry, way late to this but if you're checking replies...)
At a high level it's a matter of doing the following:
* Persistence needs to be moved to something that isn't specific to a single dyno/can be shared across dynos (i.e., not local RAM or disk).
* Updating your app code to check that shared store
* Now you can scale up to N dynos, the limit on N usually determined by your budget or when the level of concurrency creates performance issues in some other connected system (e.g., the shared persistence).
For the type of use case you've got, specific to Heroku, what I've normally seen people do is use Redis as the shared bus or just refactor the app to use Pusher Channels (https://elements.heroku.com/addons/pusher) directly.