Я обнаружил, что сервер решений закрывает соединение из-за неактивности со стороны клиента. для этого мы должны пропинговать сервер через определенное время, которое может сильно зависеть от сервера.
Вот как я решил, если кому-то нужно.
const Websocket = require('ws');
var ws = new Websocket('https://secure-mountain-02060.herokuapp.com/');
function noop() {}
ws.onmessage = function(event){
console.log(event.data);
}
ws.onclose = function(){
console.log('server close');
}
const ping = function() {
ws.ping(noop);
}
setInterval(ping, 30000);