NodeJS SocketIO多发射

时间:2018-06-26 19:22:41

标签: node.js socket.io

我已经很长时间没有使用socket.io了,所以我还是很习惯它。

我的问题是服务器多次发出一条消息。我不确定;但我相信这是因为客户端已多次连接。

我尝试了很多解决方案,但似乎都没有用。我已经放置了一段代码。

Server.js

var param = req.param.id; 
var snakeIO = io.of('/snake/'+param);
snakeIO.on('connection', (socket) => {
   socket.on('message', (name, message) => {
     name = req.session.username;
     snakeIO.emit('message', name, message);
   });
});

Client.js

var snakeIO = io('/snake/'+window.location.pathname.split("/")[2], { forceNew: true });
snakeIO.on('connect', () => {
    console.log('Connected to snake IO.');
});
snakeIO.on('message', (name, msg) => {
    messages = document.getElementById('messages');
    message = document.createElement('div');
    message.classList.add('list-group-item');
    message.classList.add('bg-dark');
    message.innerHTML = "<b>" + name + "</b> - " + msg;
    messages.appendChild(message);
});
function sendMessage(){
    message =  document.getElementById('sendMessage');
    snakeIO.emit('message', 'U/A', message.value);
    message.value = "";
}

注意:

如果我将console.log(socket.id)添加到server.js,则它会报告

 /snake/1#WoESDodIxDq2qVDyAAAZ
 /snake/1#WoESDodIxDq2qVDyAAAZ
 /snake/1#WoESDodIxDq2qVDyAAAZ
 /snake/1#...

该事件乘以重复项的数量。

0 个答案:

没有答案