1
私は自分のサイトに参加し、クライアントから送信されたCookieを使用して詳細を初期化するときに、ユーザーにメッセージを送信するためにsocket.ioを使用しています。しばらくしてからリフレッシュしてもクエリが機能しなくなりました。NodeJS + Socket.IO + Mysql
io.on('connection', function(socket) {
var user = false;
socket.on('hash', function(hash, gameType) {
socket.join(gameType);
query('SELECT * FROM `users` WHERE `hash` = ' + pool.escape(hash), function(err, row) {
if((err) || (!row.length)) return socket.disconnect();
user = row[0];
users[user.steamid] = {
socket: socket.id,
balance: parseInt(row[0].balance)
}
socket.emit('message', {
balance: row[0].balance,
type: 'hello',
user: row[0].steamid
});
}
}
function query(sql, callback) {
console.log(callback);
if (typeof callback === 'undefined') {
callback = function() {};
}
pool.getConnection(function(err, connection) {
if(err) return callback(err);
logger.info('DB Connection ID: '+connection.threadId);
connection.query(sql, function(err, rows) {
if(err) return callback(err);
connection.release();
return callback(null, rows);
});
});
}
log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'logs/site.log' }
]
});
var logger = log4js.getLogger();
var pool = mysql.createPool({
connectionLimit : 10,
database: 'test',
host: 'localhost',
user: 'root',
password: 'pw'
});
process.on('uncaughtException', function (err) {
logger.trace('Strange error');
logger.debug(err);
});
はそれをチェックアウトする前に、単に接続を解除! – GhoSTBG
よく見えます。実際にソケットを切断するのではなく、エラーメッセージを実際に記録する必要があります。 'process.on( 'uncaughtException'、...)'のようには表示されません。 –
問題は、多くの接続があるとクエリが実行を停止し、ソケットがクライアントにメッセージを送信していないことです。 – GhoSTBG