* it's running on a single dyno, which will go to sleep if there is a lack of activity or your reach the usage limit for your account for the month.
* it's using websockets to communicate, but seems to not use any shared persistence for managing state. So running a 2nd dyno to load balance + keep dynos awake doesn't appear to be an option.
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.