我已经使用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);
});
});
我希望消息会显示在聊天框中。它显示的是消息,但每条消息显示两次或三次。
答案 0 :(得分:0)
您要在每次点击事件上创建 socket监听器,这就是为什么展示次数增加的原因。