gpt4 book ai didi

javascript - 为连接到 websocket 服务器的客户端生成唯一 ID

转载 作者:行者123 更新时间:2023-12-01 03:37:34 30 4
gpt4 key购买 nike

嗨,我想为连接到 websocket 服务器的每个客户端创建唯一的整数 id。

逻辑是这样的:

  1. 当客户端连接到服务器时,它会收到一个 iduint16。
  2. ID 必须是唯一的,因此如果它获取到的 ID 会被使用现有客户将被分配一个新客户。
  3. 当客户端离开 websocket 服务器时,ID 被回收并被可供新客户使用。
  4. 任何时候并发客户端都不会超过 1000 个,但新客户端可以随时连接。我的意思是 24/7 的任何第二秒。

我尝试过的:

let i = Date.now();
i &= 0xFFFF; // i will be the unique id.

通过这种方式,连接的客户端将获得一个 16 位整数 id。当它离开服务器时,有一些逻辑来回收它,也许将它放入缓存数组中。但由于有 65535 种可能性,我可能不需要使用该缓存数组。

我知道websocket连接一旦连接就会自动生成一个套接字id,但这超过20个字节,这不是我想要的。

警告:

此方法基于这样的假设:在任何给定时间(精度为毫秒)只有一个客户端尝试连接到 websocket 服务器。

如果两个或更多客户端尝试同时连接。这是行不通的。但我想这也取决于 cpu 时钟频率或者 websocket 服务器允许新客户端连接的频率。

最佳答案

放弃使用 uint16 并改用 UUID 的想法。 https://en.wikipedia.org/wiki/Universally_unique_identifier

这些算法专为这种确切类型的用例而设计。它们经过充分测试和标准化。

使用此方法,您不必重复使用 ID。这对于日志记录特别方便,以便您始终可以确定特定连接发生了什么。此外,它在服务器之间是唯一的,因此如果您确实进行扩展,则不必担心冲突。

https://www.npmjs.com/package/uuid

关于javascript - 为连接到 websocket 服务器的客户端生成唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44148314/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com