Посмотрите на параметр enableKeepAlive у ws-сервера ratchet (без него не будут посылаться ping/pong сообщения для поддержания связи, см. спецификацию ws).
Плюс вы должны понимать что ws-соединение будет устанавливаться для каждой вкладки отдельно и по-хорошему вам нужно учесть этот момент тоже.
upd,
Плюс смотрите что приходит при onClose
socket.onclose = function(event) {
if (event.wasClean) {
alert('Соединение закрыто чисто');
} else {
alert('Обрыв соединения'); // например, "убит" процесс сервера
}
alert('Код: ' + event.code + ' причина: ' + event.reason);
};
https://learn.javascript.ru/websockets
Плюс выводить в консоль/пишите в log события сервера onClose/onError - поможет в отладке.