【发布时间】:2021-04-22 06:42:16
【问题描述】:
每当我按下客户端上的按钮向服务器发送发出请求时,该按钮都会为所有连接的用户执行。我想让它只向当前用户发出。有什么办法可以做到吗?
client.js
handleForm = () => {
socket.emit("request-uid");
socket.on("uid", (uid) => {
socket.emit("validate-data", {
title: this.state.title,
price: this.state.price,
email: this.state.email,
description: this.state.description,
contact: this.state.contact,
tags: this.state.tags,
});
});
};
socket.on("refresh", () =>{
alert("test!");
});
server.js
io.on("connection", function (socket) {
console.log("user connected!");
socket.on("request-uid", () => {
io.emit("uid", crypto.randomBytes(4).toString("hex"));
});
socket.on("validate-data", (data) => {
io.to(socket.id).emit("refresh");
});
});
当我单击执行handleForm() 函数的按钮时,它会向当前在站点上的每个用户发出套接字,无论他们是否按下该按钮。
即使我在服务器端使用io.to(socket.id),它也会将它发送给每个人,我猜这是因为“验证数据”正在运行,它会发送一个唯一的套接字来发送给所有用户。
我只是希望它向按下按钮的用户发送请求。
【问题讨论】:
标签: javascript node.js sockets socket.io