Socket.io聊天服务器

时间:2019-09-15 06:18:23

标签: javascript node.js socket.io

我已经使用javascript和nodejs创建了一个聊天服务器。一切似乎都正常,但是当我发送消息时,第一个消息显示一次,然后第二个消息显示两次,依此类推。

我在Linux上,然后在Windows计算机上,甚至在我的iPad上都尝试过。它显示出相同的结果。我也在客户端输入了计数器,结果是(对于每条消息): 讯息1:1 讯息2:2            1个 讯息3:3            2            1个 讯息4:4            3            2            1

客户

   send.addEventListener('click', event => {
       event.preventDefault();
       const msg = document.querySelector('#msg').value;
       document.querySelector('#msg').innerHTML = "";
       let packet = {
           username: userProfile.username,
           message: msg
       };
       let i = 0;
       socket.emit('chat', packet);
       socket.on('chat', (data) => {
       i=i+1;
       console.log(i);
       chatBox.innerHTML += `<p><strong>${data.username}:</strong> ${data.     message}</p>`;
       });
   });
});

服务器

   let stat = search(profile);
   if(stat.status === "failure")
   {   
       user.push(profile);
       io.sockets.emit('login', {status: "failure"});
   }
   else
   {
       io.sockets.emit('login', {status: "success"});
   }
 });

 let i = 0;
 socket.on('chat', data =>
 {
   i++;
   io.sockets.emit('chat', data);
   console.log(i);
 });
});

我希望消息会显示在聊天框中。它显示的是消息,但每条消息显示两次或三次。

1 个答案:

答案 0 :(得分:0)

您要在每次点击事件上创建 socket监听器,这就是为什么展示次数增加的原因。