首页 > 解决方案 > 无法在套接字 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);
};

请让我知道我哪里错了。

标签: javascriptsocket.io

解决方案


推荐阅读