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 の全体的なアイデアを打ち負かすためです。また、ajax 呼び出しで setTimeout を使用することもできます。
しばらく考えた後、リアルタイム ビューに最も効率的であると思われるこのプロセスを思いつきました。添付を参照してください。あなたの考えを教えてください!