【发布时间】:2015-06-07 18:31:32
【问题描述】:
我在这里阅读了一些关于这个主题的问题,但我还不确定如何在我的情况下解决它。 getMsgs 发射事件的触发次数与我访问 /admin url 的次数一样多。我从关于 SO 的其他问题中知道这是因为每次我访问 admin 页面时听众都在注册,但我不确定如何重构我的代码(即在哪里移动 io.on(..) 以及如何调用它来自router.get('/admin'..) 函数。
router.get('/admin', function(req, res, next){
io.on('connection', function (socket) {
dal.findAllMessages(function(err, messages) {
console.log('sent msgs');
socket.emit('getMsgs', messages);
});
socket.on('newMsg', function(data){
console.log('newMsg');
console.log(data);
dal.addMessage(data);
dal.findAllMessages(function(err, messages) {
socket.emit('getMsgs', messages);
});
});
socket.on('delMsg', function(data){
console.log('delMsg');
console.log(data);
dal.deleteMessage(data);
dal.findAllMessages(function(err, messages) {
socket.emit('getMsgs', messages);
});
});
});
res.render('admin');
});
【问题讨论】: