javascript - ( Node js上的Socket.io)用mysql数据更新div停止而不显示错误

标签 javascript jquery mysql node.js socket.io

我正在为我的新项目使用 socket.io,我对它完全陌生。在做了很多研究之后,我可以达到我想要的程度。 我有 div 动态填充来自 mysql 的数据。 所以我在我的 server.js 上做的是使用 setInterval 每秒查询一次数据并向客户端发出一条消息 (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);

问题是,大约 30 或 40 秒后,div 停止更新,服务器控制台不显示任何错误消息或任何内容,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;
        });
    });
}

关于javascript - ( Node js上的Socket.io)用mysql数据更新div停止而不显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34376757/

相关文章:

JavaScript 将数组打印为带括号和引号的字符串

javascript - 获取 "[object HTMLDivElement]"而不是其内容?

javascript - 在处理事件时如何定位具有特定类的元素?

javascript - 有没有办法确定 userUpdate 事件来自哪个行会?

c# - 样式和脚本在局部 View 中不起作用

java - 如何将请求重定向/转发到 $.ajax() 函数调用的 servlet 中的另一个 jsp 页面

php - 如何使用 PHP 和 PDO 获取整数和文本以自动换行

java - org.springframework.dao.InvalidDataAccessApiUsageException : Parameter with that position [2] did not exist

php - 使用php上传docx文件并将内容和图像存储到数据库中

javascript - 使用 textangular 在内容可编辑的 div 中记录和恢复插入符号的位置