[英](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.