javascript - 为什么集合没有传到客户端

标签 javascript node.js socket.io

我创建一个 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。您可以尝试一下:

enter image description here

the document的屏幕截图:

enter image description here

关于javascript - 为什么集合没有传到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70721048/

相关文章:

javascript - 简单游戏的无限循环

node.js - Nodejs集群socket.io nginx配置

javascript - 连接由不同正则表达式匹配分隔的结果

java - Dart - 如何接收和解码从 Java 应用程序发送的 JSON 数据包

node.js - Socket IO 不从手机发出事件

javascript - 从屏幕外动画一个 div,没有绝对位置?

javascript - 是否建议对javascript进行加密?

javascript - Node.js 什么是对象克隆?

node.js - 如何使用套接字发送大文件?

node.js - 如何在 Travis CI 上的一个项目中运行 Golang 和 Karma 测试