为什么socket.io无法加入给定房间?

时间:2019-01-16 06:03:21

标签: node.js socket.io

尝试将套接字连接到房间时遇到问题。房间的名称是socket.id,并在连接时分配。但是,发生这种情况时,它不会加入房间。可能是什么错误?

客户代码:

var socket = io();

socket.on("connect", function() {
    socket.emit("joinRoom", socket.id);
});

socket.on("agentMessage", function(msg) {
    $('#messages').append("<div class='agent-messages'><p>" + msg + "</p></div>");
});

服务器代码:

io.on("connection", (socket) => {
   let roomID;

    socket.on("joinRoom", (socket_id) => {
        roomID = socket_id;
        socket.join(roomID);
        socket.to(roomID).emit("agentMessage", "Welcome!");
    });

    socket.on("disconnect", () => {
        socket.leave(socket_id);
    });
});

1 个答案:

答案 0 :(得分:0)

您的client实际上正在加入room,但是没有发送message。从message端发送server时,不能使用socket发送,因为socket代表client连接,不能抛出{{1} }代表events。您必须使用

server

因为io代表服务器实例,并且可以代表服务器(实际上是服务器)引发事件。 enter image description here

Reference