【发布时间】:2012-09-04 15:19:11
【问题描述】:
我已经为自己设置了一个带有 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 调用一起使用。
经过一番思考,我想出了这个过程,我认为这对于实时视图来说是最有效的,请参阅附件。请告诉我你的想法!
【问题讨论】:
标签: mysql ajax node.js socket.io