在 Map 中存储套接字对象是否会在客户端数量较多的生产环境中导致问题?

问题描述 投票:0回答:1

我正在使用 ocpp-rpc 包来运行 OCPP 服务器,目前我正在使用 Map 来存储连接的客户端对象,我想稍后引用它们。

我像下面一样存储它们

const connectedChargers = new Map();

server.on('client', async (client) => {
    console.log(`${client.identity} connected!`);

    connectedChargers.set(client.identity, client); // storing client reference
});

我想知道这是最佳做法吗?有没有更好的方法来实现这一目标? 我的系统将有数千个客户端连接到服务器,所以我需要最佳的方法来处理这个问题。

我也尝试将它们保存在Redis中,但由于循环引用而失败。

基本上我需要知道我的方法是好还是坏,如果不好,有更好的方法来实现这一目标。

我尝试将它们保存在Redis中,但由于循环引用而失败。我想要

javascript node.js rpc ocpp
1个回答
0
投票

你所做的一切都很好,只要确保在断开连接时清理它们即可。

在映射中保留客户端对象的引用并不重要,即使您保留了“一百万”个客户端对象。无论如何,客户端对象都保存在内存中,您只是保存一个密钥和对该对象的引用。 您真正关心的应该是带宽、保持套接字打开所需的 RAM 操作系统数量,最重要的是,处理数千个客户端收到的消息所需的 CPU 使用率,特别是当它们要发送大量消息时!

© www.soinside.com 2019 - 2024. All rights reserved.