使用Socket.io发送和接收数据

时间:2019-04-23 15:39:54

标签: javascript node.js express socket.io

我有两个客户端,客户端1将数据发送到我们的Node.js&Express后端,后端发出一个事件,只有客户端2可以接收它。之后,客户端2接收并显示数据。

下面是客户端1的代码:

var socket = io();
  socket.emit("match_package", {user_uid, match_uid, room_id, user_data});

Node.js Express服务器:

var tech = io.of("/");
tech.on("connection", (socket) => {
  socket.on("match_package", (data) => {
    var match_uid = data.match_uid;
    var room_id = data.room_id;
    socket.emit(match_uid, room_id);
    socket.emit("1", "hello");
  }
}

客户端2:

var socket = io();
socket.on('connect', () => {
  socket.on(user_uid, (data) => {
    console.log(data);
  })
  socket.emit("1", (data) => {
    console.log(data);
  })
})

后端的match_uid与客户端2(已验证)中的user_uid相同。这就是该事件仅对客户端2可见的方式。但是在客户端2上,console.log却不显示任何数据。我可以保证在后端可以很好地接收数据。但是客户端2无法接收到它。

我什至从后端发出了一个虚拟事件“ 1”。客户端2也未收到该消息。

我在这里做什么错了?

非常感谢您的帮助和时间。

1 个答案:

答案 0 :(得分:1)

您需要将所有socket.id存储在数组中,然后在发送消息时就可以使用接收方名称获取该socket.id。

Here you can find what you need