Socket.io重复发射的第二个窗口
问题描述:
我测试socket.io,做一个简单的聊天消息(按照官方网站的教程)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);
});
答
这是因为你”每当有人访问'/'
路由时重新创建连接监听器。尝试移动'/'
路由功能之外的socket-io代码。
答
正如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);
});
});
这是因为你每次有人访问''/''路由时都会创建一个连接监听器。尝试移动“/”路由功能之外的socket-io代码。 –
谢谢。是吗!!添加答案生病upvote并标记为已解决 –