我已经使用 mysql 节点模块为自己设置了一个 NodeJS 和 socket.io 服务器,并且一切正常。
这是我的脚本:
// create an http server listening on port 8100
var io = require('socket.io').listen(8100);
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '127.0.0.1',
user : 'user',
password : 'password',
database : 'mybase'
});
connection.connect(function(e){
if(e)
{
console.log('Database connection failed. ('+e+')') ;
}
else
{
console.log('Database connection successful!') ;
}
})
connection.query('SELECT id, name FROM entity_details WHERE id = 4626', function(e, rows) {
if(e)
{
}
else
{
console.log(decodeURIComponent(rows[0]['name'])) ;
}
});
// listen on new connections
io.sockets.on('connection', function (socket) {
// listen on an event called "eventA"
socket.on('eventA', function(data) {
// send "eventA" to all clients, except the sender
io.sockets.emit('eventA', data);
});
});
我的问题是如何让 MySQL “告诉” nodeJS/Socket.io 列中的值已更改或新行已更新?所以实际上我可以实时查看数据库中我想要的任何表、列等?
我想我不想每秒都轮询数据库,因为这违背了 socket.io 的整个想法,我不妨将 setTimeout 与 ajax 调用一起使用。
经过一番思考,我想出了这个我认为对于实时视图最有效的过程,请参阅附件。请让我知道你在想什么!