Node.js Веб-гнездо H15 Тайм-аут простоя в режиме ожидания на Heroku

Мы запускаем приложение Node.js и Express на Heroku, которое использует библиотеку ws для веб-сокетов реального времени. Ниже приведен снимок экрана о большом тайм-ауте H15, который мы видим.

enter image description here

Я читал, что Heroku прекращает любое свободное соединение через 55 секунд, но наши сокеты отправляют ping-pong взад и вперед каждые 5 секунд, когда соединение открыто. Ниже приведен фрагмент кода сервера:

var _this = this;

this.server.on('connection', function(ws){

    // check for a ping, respond with pong
    ws.on('message', function(data){
        data = data.toString('utf8');
        if (data === PING) {
            ws.send(PONG);
        }
    });

    ws.on('close', function(err){
        TL.logger.info('Socket closed: '+path);
        _this.sockets = _.filter(_this.sockets, function(_ws){
            return ws != _ws;
        });
    });

    ws.on('error', function(err){
        TL.logger.info('Socket error: '+path);
        _this.sockets = _.filter(_this.sockets, function(_ws){
            return ws != _ws;
        });
    });

    _this.sockets.push(ws);
});

И вот изображение сокета клиентской стороны в хром:

enter image description here

Любая идея, как предотвратить простоя соединения?

Ответ 1

: Я являюсь владельцем платформы Node.js в Heroku.

Вы видите это на стороне клиента? Или просто панель отчетов об ошибках?

Я бы рекомендовал сосредоточиться на воспроизведении ошибок, по крайней мере, на одном клиенте, чтобы увидеть, действительно ли это повлияло. В противном случае вы можете тратить время на отладку ложных срабатываний.

Если вы решите продолжить отладку, вы можете установить бесплатный papertrail/nodetime/new relic/strongloop addon, чтобы точно определить, какие запросы запускают H15s.