Ho un server node.js che si collega a un database mysql e apre un nuovo socket tramite socket.io. Il ruolo di questo server è fondamentalmente quello di notificare qualsiasi client (utente) che si connette ad esso quando c'è un nuovo messaggio per quell'utente nella tabella del database. Il codice riportato sotto funziona solo se il client emette esplicitamente una richiesta 'check_messages'. Come posso cambiarlo in modo che il client sia quello che viene notificato ogni volta che un nuovo messaggio viene inserito nella tabella mysql per quell'utente, invece che il client deve emettere esplicitamente una richiesta 'check_messages'?Socket.io per il controllo degli aggiornamenti dal database
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
}
});
});
});
Ciao, il problema è risolto? E come? Grazie. – diligent