繁体   English   中英

(Node.js上的Socket.io)使用mysql数据更新div时不显示错误

[英](Socket.io on nodejs) Updating div with mysql data stops without showing error

我在我的新项目中使用socket.io,所以我是一个新手。 经过大量的研究,我可以达到我想要的目的。 我的div动态充满了来自mysql的数据。 因此,我在server.js上执行的操作是使用setInterval每秒查询数据并向客户端发出一条message(updateItem)。 我的代码:

function updateitems(){
pool.getConnection(function(err,connection){
   if (err) {
    console(err);
     connection.release();
     return;
   }
connection.query("SELECT * FROM items",function(err,rows){
       if(!err) {
        var items= [];
        for (var i = 0; i < rows.length; i++) {
            items.push(rows[i]);
        }
        io.sockets.emit('updateItems', items);
        }else{
            console.log(err);
        }

});
connection.on('error', function(err) {
    console.log(err);
    return;
});
});
}

接着:

setInterval(updateitems, 1000);

问题是,在div停止更新大约30或40秒后,服务器控制台没有显示任何错误消息或任何东西,VPS上的级别很好,没有高负载或任何东西。 它只是停止...有什么建议吗? 谢谢!

假设您正在使用node-mysql或类似的东西,那么您必须在完成连接后释放连接,以便它可以返回到连接池并可以重用。 否则,您的池将用尽连接,随后对连接的请求将只是停止或出错。 这是释放连接的一种方法:

function updateitems() {
    pool.getConnection(function (err, connection) {
        if (err) {
            console(err);
            connection.release();
            return;
        }
        connection.query("SELECT * FROM items", function (err, rows) {

            // <<<< Add this line >>>>
            connection.release();

            if (!err) {
                var items = [];
                for (var i = 0; i < rows.length; i++) {
                    items.push(rows[i]);
                }
                io.sockets.emit('updateItems', items);
            } else {
                console.log(err);
            }
        });
        connection.on('error', function (err) {
            // <<<< Add this line >>>>
            connection.release();

            console.log(err);
            return;
        });
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM