Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.io聊天服务器_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript Socket.io聊天服务器

Javascript Socket.io聊天服务器,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我已经使用javascript和nodejs创建了一个聊天服务器。一切似乎都很正常,但当我发送消息时,第一条消息显示一次,第二条消息显示两次,以此类推 我在Linux上试过,然后在Windows机器上试过,甚至在我的iPad上试过。它显示了同样的结果。我也在客户端输入了计数器,结果是(对于每条消息): 信息1:1 信息2:2 1. 信息3:3 2. 1. 信息4:4 3. 2. 一, 客户 我希望聊天框上会显示这些消息。它会显示消息,但每个消息会显示两到三次。您在每个单击事件上都会创建套接字侦听

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

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

客户
我希望聊天框上会显示这些消息。它会显示消息,但每个消息会显示两到三次。

您在每个单击事件上都会创建套接字侦听器,这就是显示计数增加的原因

每次处理单击时,您都在添加另一个
套接字。在('chat',
侦听器上-将
套接字放在('chat',(数据)
代码之外的
发送。addEventListener('click',event=>{
句柄是的,它现在似乎正在工作。非常感谢。。。。。。
   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);
 });
});