最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Heroku上的Node.js Web Socket H15空闲连接超时

IT培训 admin 8浏览 0评论

Heroku上的Node.js Web Socket H15空闲连接超时

我们在Heroku上运行一个Node.js和Express应用程序,它使用ws库进行实时Web套接字。下面是我们看到的众多H15超时的屏幕截图。

我已经读过Heroku terminates any idle connection after 55 seconds,但是当连接打开时,我们的套接字每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);
});

这是chrome中客户端插槽的图片:

有任何想法如何防止空闲连接?

回答如下:

披露:我是Heroku的Node.js平台所有者。

你在客户端看到这个吗?或者只是错误报告仪表板?

我建议专注于在至少一个客户端上重现错误,看看是否有任何影响。否则,您可能会浪费时间调试误报。

如果您决定继续调试,您可能需要安装一个免费的papertrail / nodetime / new relic / strongloop插件来确定哪些请求正在触发H15。

Heroku上的Node.js Web Socket H15空闲连接超时

我们在Heroku上运行一个Node.js和Express应用程序,它使用ws库进行实时Web套接字。下面是我们看到的众多H15超时的屏幕截图。

我已经读过Heroku terminates any idle connection after 55 seconds,但是当连接打开时,我们的套接字每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);
});

这是chrome中客户端插槽的图片:

有任何想法如何防止空闲连接?

回答如下:

披露:我是Heroku的Node.js平台所有者。

你在客户端看到这个吗?或者只是错误报告仪表板?

我建议专注于在至少一个客户端上重现错误,看看是否有任何影响。否则,您可能会浪费时间调试误报。

如果您决定继续调试,您可能需要安装一个免费的papertrail / nodetime / new relic / strongloop插件来确定哪些请求正在触发H15。

发布评论

评论列表 (0)

  1. 暂无评论