我有一個連接到mysql數據庫並使用socket.io打開一個新套接字的node.js服務器。此服務器的作用基本上是在數據庫表中存在該用戶的新消息時通知與其連接的任何客戶端(用戶)。下面的代碼僅在客戶端明確發出'check_messages'請求時纔有效。我怎樣才能改變它,這樣客戶端就會在每次在mysql表中爲該用戶插入新消息時通知客戶端,而不是客戶端必須明確發出'check_messages'請求?用於檢查數據庫更新的Socket.io
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
}
});
});
});
嗨,你的問題解決了嗎?如何?謝謝。 – diligent 2013-07-03 04:27:05