javascript - 使用 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 也没有收到。
我在这里做错了什么?
非常感谢您的帮助和时间。
解决方案
您需要将所有 socket.id 存储在数组中,然后您可以在发送消息时获取带有接收者名称的 socket.id。
推荐阅读
- javafx - JavaFX应用程序中的实时XChart
- android - github上的cherrypicking提交,一些基本东西的问题
- android - 在视频上添加水印
- javascript - Alasql - 使用 Wraptext 和多个工作表创建 Excel
- python-3.x - 容器在 Google Cloud Shell 中启动,但在 Kubernetes Engine 上失败
- mysql - 使用 3 个条件和 1 个顺序对大型 MySQL 表执行长查询
- java - java Servlets加2个数
- api - Skype for Business Online 管理 API
- ocaml - 找不到记录字段注释
- html - 如何将所有星级评分放在同一行?