Мы запускаем приложение Node.js и Express на Heroku, которое использует библиотеку ws для веб-сокетов реального времени. Ниже приведен снимок экрана о большом тайм-ауте H15, который мы видим.
Я читал, что 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);
});
И вот изображение сокета клиентской стороны в хром:
Любая идея, как предотвратить простоя соединения?