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

我为我的新项目使用socket.io,而我完全是新的。 经过大量的研究,我可以达到我想要的程度。 我有dynamic填充从MySQL数据的div。 所以我在我的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上的水平是好的,没有高负荷或任何东西。 它只是停止…任何build议? 谢谢!

假设您正在使用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; }); }); }