当有人使用套接字 io 连接到服务器时,我尝试从服务器发送一个包含所有用户 ID 的数组。显然,发射部分似乎工作正常,但接收部分根本没有响应。
io.sockets.on('connection',
// here's the on connection event
function (socket) {
i++;
ids[i]=socket.id;
console.log("We have a new client: " + ids[i]);
socket.broadcast.emit('setid', ids);
}
/////that is the emitting part
现在这是接收部分:
socket.on('setid',
function(ids) {
console.log(ids);
}
);
最佳答案
您需要将 socket.broadcast.emit('setid', ids);
更改为 socket.broadcast.emit('setid', {idArr:ids});
code> 和 console.log(ids.idArr);
在接收函数上。
正如有人问的,
服务器
io.on('connection',
// here's the on connection event
function (socket) {
let i = 0;
let ids = [];
i++;
ids[i]=socket.id;
console.log("We have a new client: " + ids[i]);
socket.broadcast.emit('setid', {
idArr:ids
});
}
客户端
socket.on('setid', function(ids) {
console.log(ids.idArr);
}
);
作为旁注,因为这里并不完全清楚,使用 socket.broadcast.emit
应向所有客户端发出除了发送发出的套接字所以直到你打开另一个它不会发出的客户端实例。
关于javascript - 某个函数无法与 Socket.io 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079538/