ฉันได้ตั้งค่าตัวเองเป็นเซิร์ฟเวอร์ NodeJS และ socket.io ด้วยโมดูลโหนด mysql และทำงานได้ดี
นี่คือสคริปต์ของฉัน:
// 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 เช่นกัน
หลังจากคิดอยู่พักหนึ่งก็เกิดกระบวนการที่คิดว่าจะมีประสิทธิภาพมากที่สุดสำหรับการดูแบบเรียลไทม์ โปรดดูไฟล์แนบ โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไร!