【发布时间】:2018-04-02 02:29:39
【问题描述】:
我使用 nodejs 作为服务器。 Usinf socket.io 我想在数据库表中插入新数据时刷新我的图表。
即在表中添加数据的服务器代码。在数据库中添加数据后,我向客户端发送一条消息以更新我的图表。
app.post('/usersacces/add', function (req,res) {
var response = [];
if (typeof req.body.alias!== 'undefined' &&typeof req.body.nom!== 'undefined' ) {
var alias = req.body.alias, nom = req.body.nom;
connection.query('INSERT INTO administration_users_niveaux_acces (alias, nom) VALUES (?, ?)',
[alias, nom],
function(err, result) {
if (!err){
if (result.affectedRows != 0) {
response.push({'result' : 'success'});
} else {
response.push({'msg' : 'No Result Found'});
}
// When a client connects, we note it in the console
io.sockets.on('connection', function (socket) {
socket.emit('message', 'You are connected!');
console.log('message '+ 'You are connected!');
});
res.setHeader('Content-Type', 'application/json');
res.status(200).send(JSON.stringify(response));
} else {
res.status(400).send(err);
}
});
} else {
response.push({'result' : 'error', 'msg' : 'Please fill required details'});
res.setHeader('Content-Type', 'application/json');
res.status(200).send(JSON.stringify(response));
}
});
那是客户端,应该接收消息并更新图表。但是当单击按钮在数据库中添加新数据时,图表不会更新,并且发送给服务器的消息不会显示在控制台中。它仅在我加载页面时显示。
socket.on('message', function(message) {
var databa = [];
$.ajax({
url: '/usersacces'
})
.done(function(data) {
for (var i = 0, len = data[0].items.length; i < len; i++) {
var e1 = data[0].items[i].id;
databa.push(e1);
}
myChart.data.datasets[0].data = databa;
myChart.update();
}).always(function() {
console.log(1);
});
console.log('The server has a message for you: ' + message);
});
【问题讨论】:
-
所以你做console.log时收不到消息('服务器有消息给你:'消息); ??我没有看到您在哪里向客户端发送带有新数据的消息?
标签: javascript node.js web-services socket.io