Я не спец, но начну:
1. Canvas:
Crafty
2. WebSocket:
https://learn.javascript.ru/websockets
https://www.html5rocks.com/ru/tutorials/websockets...
3. Socket.IO:
socket.io/docsRooms
4. node.js:
https://delovsaite.ru/blog/dev/realtime-applicatio...
Если делать для браузера (браузер в качестве клиента) - то первое на что бы я обратил внимание, как на точку интеграции со стороны клиента - это WebWorker и единый канал общения с сервером, если открыть тучу вкладок.
Затем - выделил бы потоки в конвейеры на стороне сервера и клиента.
Затем, сделал бы простую реализацию hellow-world на сокете на стороне сервера и реализовал бы реконнекты после потери связи.
Когда пакеты бы ходили как часы, когда есть соединение с сервером и автоматом сразу после появления соединения, и при множестве вкладок - только после этого - стал бы думать про архитектуру клиента и сервера уже глубже.
Т.е., сначала - надёжный канал до логики, и только потом - уже архитектура обработки на конечных точках.