我正在使用 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中,但由于循环引用而失败。我想要
你所做的一切都很好,只要确保在断开连接时清理它们即可。
在映射中保留客户端对象的引用并不重要,即使您保留了“一百万”个客户端对象。无论如何,客户端对象都保存在内存中,您只是保存一个密钥和对该对象的引用。 您真正关心的应该是带宽、保持套接字打开所需的 RAM 操作系统数量,最重要的是,处理数千个客户端收到的消息所需的 CPU 使用率,特别是当它们要发送大量消息时!