(Socket.Io)io.sockets.in()。emit()

时间:2018-09-17 19:00:27

标签: javascript html node.js socket.io

早上好!我目前在Node.js服务器上使用Socket.Io(版本2.1.1),并试图使用该功能将消息和事件加入和释放到命名空间中的特定房间。在服务器端,我的代码如下:

  io
        .of("/chat")
        .on("connection", (socket: any) => {
                socket.join('room1', () => {
                    console.log(socket.rooms);
                    io.sockets.in("room1").emit('connectedToRoom1', { message: "You connected room 1" });
                });
        });

我知道我已成功连接到room1,因为它在我调用时将以下响应记录到控制台:

console.log(socket.rooms); // this successfully logs that I joined room1

// The response
    { '/chat#LMPBwLXoBonQ11XDAAAB': '/chat#LMPBwLXoBonQ11XDAAAB',
      room1: 'room1' }

在客户端,我的代码如下:

var socket = io.connect("http://localhost:3000/chat");

socket.on("connectedToRoom1", () => {
            console.log("A new user has joined room1");
        });

我的问题是客户端没有登录到控制台,在我看来,客户端根本没有响应正在监听的事件。我可以正确地响应并在Socket.Io中发出正常事件,在我当前的设置中,它根本不允许我在房间中执行此操作。我在这里做错什么了吗?

谢谢,迈克尔

P.S。我已经研究了以下文章,但无济于事:

io.sockets.in(room).emit() not working

Node.js - io.sockets.in(room) not working

0 个答案:

没有答案