我正在测试socket.io并做一个简单的聊天消息(按照官方网站上的教程)
我打开了2个窗口:
当我在打开的第一个窗口中发出事件时,确定。
但是,当我在第二个窗口中发出事件时,这会将事件发送2次(重复)。
PS:如果我打开第三个窗口,这会发送3次事件
Node.js代码:
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
io.on('connection', function(socket) {
socket.on('chatMessage', function(msg){
io.emit('chatMessage', msg);
});
});
});
客户方:
methods: {
sendMessage: function () {
socket.emit('chatMessage', this.text);
}
socket.on('chatMessage', function(msg){
console.log('Client side message: ' + msg)
vmIndex.messages.push(msg);
});
答案 0 :(得分:1)
这是因为您每次有人访问'/'
路线时都会创建连接侦听器。尝试将socket-io代码移到'/'
路由功能之外。
答案 1 :(得分:1)
正如Eric所提到的,将您的连接侦听器移到/
路由之外,以防止每次有人访问该页面时都会创建它。
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
io.on('connection', function(socket) {
socket.on('chatMessage', function(msg){
io.emit('chatMessage', msg);
});
});