我创建一个 map 对象并在键处写下id,将用户名作为值,在服务器端一切正常,集合输出到控制台,但是当我将其传递到客户端时,它要么没有正确传输,要么根本不起作用。阵列一切正常。 服务器:
socket.on('connect user', (userName) => {
//users.push(userName.userConnect);
users.set(id++, userName.userConnect); // map users
console.log(users);
io.emit("users", users); // passing the collection
客户:
const addUserToModalWindow = () => {
const contentWindow = document.querySelector(".usersList");
socket.on('users', (users) => {
for (let user of users) {
console.log(user);
}
});
};
写入错误:用户不可迭代。
最佳答案
问题是由于您正在使用的库 socket.io在客户端和服务器端通信期间将有效负载对象转换为 JSON。
但是,您无法将 Map 或 Set 对象直接转换为 JSON。您可以尝试一下:
the document的屏幕截图:
关于javascript - 为什么集合没有传到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70721048/