Node.jsとの通常の接続を使用する代わりに、mysql へのプール接続の使用を開始しました。プロセスが終了したら、接続を解放する必要があるためです。接続が開いたままになると、 mysqlタイムアウトの問題によりNode.jsが例外になります。
コードを編集しましたが、94 行目のようなエラーは表示されません。
TypeError: Object #<Connection> has no method 'release'
at Query._callback (/usr/local/src/conn.js:94:28)
その行の上:
socket.on('getUnreadPM', function (msg) {
var userSocket = clients[msg.userDestID];
if (msg.lastGotMessage == 'none') {
post = 'Select * from messages where (destUserID=\'' + msg.userDestID + '\' AND srcUserID=\'' + msg.userSrcID + '\') OR (destUserID=\'' + msg.userSrcID + '\' AND srcUserID=\'' + msg.userDestID + '\')';
} else {
post = 'Select * from messages where destUserID=\'' + msg.userDestID + '\' AND srcUserID= \'' + msg.userSrcID + '\' AND messageSendDate between \'' + msg.lastGotMessage + '\' and \'' + msg.deviceCurrentTime + '\' AND messageSendDate > \'' + msg.lastGotMessage + '\' order by messageSendDate';
}
pool.getConnection(function (err, connection) {
// Use the connection
connection.query(post, function (error, results, fields) {
// And done with the connection.
if (results.length > 0) {
if (typeof userSocket !== 'undefined') {
var boolData = results[0];
//console.log('bool data lenght : ',results.length);
var messageID = new Array();
var srcUserID = new Array();
var destUserID = new Array();
var messageContent = new Array();
var messageDate = new Array();
var didRead = new Array();
for (var i = 0; i < results.length; i++)
{
messageID.push(results[i].messageID);
srcUserID.push(results[i].srcUserID);
destUserID.push(results[i].destUserID);
messageContent.push(results[i].messageContent);
messageDate.push(dateFormat(results[i].messageSendDate, "yyyy-mm-dd HH:MM:ss"));
didRead.push(results[i].didRead);
}
userSocket.emit('history :', {
'dataMode': 'history',
'srcUserID': srcUserID,
'destUserID': destUserID,
'messageContent': messageContent,
'messageSendDate': messageDate,
'didread': didRead
});
} else {
userSocket.emit('history :', {
'dataMode': 'none',
});
}
} else {
userSocket.emit('history :', {
'dataMode': 'none',
});
}
connection.release();
});
});
});