【问题标题】:socket io rooms do not get any data from serversocket io 房间没有从服务器获取任何数据
【发布时间】:2021-04-16 16:49:00
【问题描述】:

我想为我的 react native 创建聊天室,并为我的 react native 应用编写该代码:

 useEffect(() => {
    const socket = io("http://localhost:3000");
    socket.emit("new-user", "hello world");
    socket.on("room1", (data) => {
      socket.on("user-connected", (data) => {
        console.log(data);
      });
    });
    return () => {
      socket.disconnect();
    };
  }, []);

这是服务器代码:

io.on("connection", (socket) => {
  console.log("made socket connection", socket.id);

  socket.on("new-user", (data) => {
    socket.join("room1");
    socket.to("room1").broadcast.emit("user-connected", data);
    console.log(data);
  });
});

连接已建立,但聊天“room1”或“user-connected”未收到来自服务器的任何数据。我怎样才能收听聊天室?

【问题讨论】:

    标签: javascript node.js sockets socket.io


    【解决方案1】:

    在您的服务器代码更改

    socket.to("room1").broadcast.emit("user-connected", data);
    

    socket.to("room1").emit("user-connected", data);
    

    在您的客户端代码中,您不需要额外的socket.on("room1")。所以你最终的客户端代码会是这样的:

    useEffect(() => {
    const socket = io("http://localhost:3000");
    socket.emit("new-user", "hello world");
      socket.on("user-connected", (data) => {
        console.log(data);
      });
    return () => {
      socket.disconnect();
    };
    }, []);
    

    【讨论】:

    • 但我不明白客户是如何听特定房间的。
    • 客户端不需要监听特定的房间。因为当您从服务器触发“用户连接”事件时,它将被发送到连接到“房间1”的客户端。
    • 当客户端触发“新用户”事件时,您正在将客户端连接到“房间 1”。 socket.on("new-user", (data) => { socket.join("room1"); });
    • @EmirhanYılmaz 嗨,你能看看我的问题吗stackoverflow.com/questions/65682609/…
    【解决方案2】:

    试试这个:

     useEffect(() => {
        const socket = io("http://localhost:3000");
        socket.emit("new-user", "hello world");
        socket.on("user-connected", (data) => {
            console.log(data);
          });
        return () => {
          socket.disconnect();
        };
      }, []);
    

    您不必在前端收听特定的房间。因为每个套接字都会自动加入一个由其 id 标识的房间。服务器知道哪个用户在哪个房间。

    您可以在 socket io 文档的this specific section 中阅读更多相关信息。

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 2012-12-16
      • 1970-01-01
      相关资源
      最近更新 更多