javascript - 无法在套接字 io 上广播多条消息
问题描述
我正在编写一个程序,我想使用套接字 IO 广播消息。这是一个聊天界面。
这是我的代码
socket.on('send-chatMessage', message => {
var gotNewMsg = false;
sendChatMessage(message, chatMessagesJSON, function (resp, err) {
console.log('resp from send chat --->');
console.log(JSON.stringify(resp));
console.log('err');
console.log(err);
gotNewMsg = true;
socket.broadcast.emit('chat-message', {
message: message,
name: users[socket.id]
});
if (gotNewMsg) {
buildChatResponse(chatMessagesJSON, function (resp, err) {
console.log('resp from send chat');
console.log(JSON.stringify(resp));
console.log('err');
console.log(err);
socket.broadcast.emit('chat-message', {
message: JSON.stringify(resp.messages[0].type),
name: 'Agent'
});
});
}
})
});
这是我的第一个
socket.broadcast.emit('chat-message', {
message: message,
name: users[socket.id]
});
工作正常,但我的第二个
if (gotNewMsg) {
buildChatResponse(chatMessagesJSON, function (resp, err) {
console.log('resp from send chat');
console.log(JSON.stringify(resp));
console.log('err');
console.log(err);
socket.broadcast.emit('chat-message', {
message: JSON.stringify(resp.messages[0].type),
name: 'Agent'
});
});
}
没有按预期工作。我可以输入if
并打印结果。唯一失败的是广播。
这是我的广播处理程序。
socket.on('chat-message', data => {
appendMessage(`${data.name}: ${data.message}`);
})
function appendMessage(message) {
const messageElement = document.createElement('div');
messageElement.innerText = message;
messageContainer.append(messageElement);
};
请让我知道我哪里错了。
解决方案
推荐阅读
- python-3.x - 错误:无法导入包“kivymd.navigationdrawer.NavigationLayout”
- reactjs - 如何将 Chrome 选择器路径转换为 testCafe 选择器
- backbone.js - 有没有办法打印出 requirejs 认为它在运行时使用的依赖项?
- python - 如何使用 python boto3 向本地 SQS 队列发送消息?
- c++ - C ++插入排序错误功能不起作用
- javascript - Javascript 对日期对象数组进行排序
- android - android studio清单文件问题
- date - 某人去世时如何停止约会
- git - 在 rebase 中撤消 git move
- performance - 休眠会话初始化在生产中非常慢,有许多实体定义