socketio& ReactJS:消息从服务器到前端多次发射
我正在使用ReactJ(socketio)和Nodejs进行聊天室应用程序。当我从前端到服务器发出消息时,它只会发出一次,但是当我从服务器回到frontend时,它会发出多次。
前端代码:
function handleChat(event) {
event.preventDefault();
socket.emit("newMessage", { message: msg, user: props.user.name });
setMsg("");
}
socket.on("messageList", (list) => {
console.log(list.message);
var allMsg = messages
allMsg.push({message: list.message.message, name: list.message.user})
setMessages(allMsg);
})
在上面的代码newMessage
是将消息从前端发射到服务器的处理程序,而Messagelist
是服务器消息的处理程序(这是问题)。
后端代码:
namespace.forEach((ns) => {
io.of(`/${ns.name}`).on("connect", (socket1) => {
// console.log(ns.name, socket1.id);
socket1.on("name",(name)=>{
console.log(name);
})
socket1.on("newMessage", (message) => {
console.log(message);
io.of(`/${ns.name}`).emit("messageList",{message})
});
});
});
I am making a chatroom application using reactjs(socketIo) and nodeJs. When I emit the message from frontend to server, it gets emitted only once, but when I emit it back from server to frontend, It gets emitted multiple times.
Frontend Code:
function handleChat(event) {
event.preventDefault();
socket.emit("newMessage", { message: msg, user: props.user.name });
setMsg("");
}
socket.on("messageList", (list) => {
console.log(list.message);
var allMsg = messages
allMsg.push({message: list.message.message, name: list.message.user})
setMessages(allMsg);
})
In the code above newMessage
is the handler for emitting the message from frontend to server and messageList
is the handler for message from the server(which is the issue).
Backend Code:
namespace.forEach((ns) => {
io.of(`/${ns.name}`).on("connect", (socket1) => {
// console.log(ns.name, socket1.id);
socket1.on("name",(name)=>{
console.log(name);
})
socket1.on("newMessage", (message) => {
console.log(message);
io.of(`/${ns.name}`).emit("messageList",{message})
});
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论