【发布时间】:2019-11-03 22:59:03
【问题描述】:
我已经编写了 socket.io 和 nodejs 的代码来从数据库中获取值并将值发送到客户端而不使用 setInterval 刷新。它工作正常,但我不想使用 setInterval 函数。因为有时我的数据库会在几小时内更改,有时在几分钟内,有时在几毫秒内。所以我不想使用 setInterval 函数。我只希望当数据库值更改时它会自动更新。而已。我有点陷入其中。
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var mysql = require('mysql');
users = [];
connections = [];
disconnection = [];
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'test'
});
connection.connect(function(error){
if(!!error) {
console.log('Error in connection');
} else {
console.log('Database Connected');
}
});
server.listen(process.env.PORT || 3000);
console.log('Server Running...');
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
io.sockets.on('connection', function(socket) {
connections.push(socket);
console.log('Connected: %s socket connected',
connections.length);
setInterval(function() {
connection.query('select value from piechart',
function(error, rows, fields) {
if(rows.length>0) {
io.sockets.emit('new message', {msg: rows});
//io.sockets.emit('new message', {msg:
'Change.'});
//console.log('Value is fetched from database');
//console.log(rows);
} else {
alert('what will happend');
}
//connection.release();
});
}, 3000);
});
【问题讨论】: