У меня есть сервер node.js, который подключается к базе данных mysql и открывает новый сокет, используя socket.io. Роль этого сервера в основном заключается в том, чтобы уведомить любого клиента (пользователя), который подключается к нему, когда появляется новое сообщение для этого пользователя в таблице базы данных. Приведенный ниже код работает только в том случае, если клиент явно выдает запрос "check_messages". Как я могу изменить его так, чтобы клиент был уведомлен, когда новое сообщение было вставлено в таблицу mysql для этого пользователя, вместо того, чтобы клиент явно выдавал запрос "check_messages"?
var app = require('http').createServer().listen(8124);
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'some username',
password : 'some password',
database : 'some database'
});
connection.connect();
console.log('Server running at http://127.0.0.1:8124/');
var io = require('socket.io').listen(app);
var prev_id = 0;
io.sockets.on('connection', function (socket) {
socket.emit('greeting', 'Hello');
socket.on('check_messages',function(data){
var uid = data['uid'];
var q = "SELECT * FROM messages WHERE user_id=" + uid + " ORDER BY id DESC LIMIT 1";
connection.query(q, function(err, rows, fields) {
if (err) throw err;
if (rows[0].id > prev_id){
socket.emit('new_message',rows[0]);
prev_id = rows[0].id
}
});
});
});