Если вы упоротый рубист, стоит реализовать сервер на основе
faye/faye-websocket-ruby или
imanel/websocket-ruby с воркерами на
sidekiq. В качестве окружения я лично предпочитаю JRuby. Ещё я видал как люди гоняли рубисткий
sock.js. Я даже не представляю почему у него популярность ниже того же socket.io, а поддержка в разы лучше.
Также обязательно нужно написать fallback на Server-sent events и long polling.
Хотя можно вообще на заморачиваться с websocket'aми - его может будет достаточно, и для чатов с большим количеством народу производительность у него будет выше чем у Websocket'ов.
А так, в соседней вселенной, я обычно использую Vert.x и местный sock.js с откатом на sse.