您好我想为连接到websocket服务器的每个客户端创建唯一的整数id。
逻辑是这样的:
我尝试过:
let i = Date.now();
i &= 0xFFFF; // i will be the unique id.
通过这种方式,连接的客户端将获得16位整数id。当它离开服务器时有一些回收它的逻辑,可能把它放入一个缓存的数组中。但由于有65535种可能性,我可能不需要使用该缓存数组。
我知道websocket连接会在连接后自动生成套接字ID,但这超过了20个字节,这不是我想要的。
警告:
此方法基于以下假设:在任何给定时间只有一个客户端尝试连接到websocket服务器(精度为毫秒)。
如果两个或多个客户端尝试同时连接。这不起作用。但我想这也取决于cpu时钟速率或者websocket服务器允许新客户端连接的频率。
答案 0 :(得分:2)
放弃使用uint16并切换到UUID的想法。 https://en.wikipedia.org/wiki/Universally_unique_identifier
这些算法专为此类用例而设计。它们经过了充分的测试和标准化。
使用此方法,您不必重新使用ID。这对于日志记录尤其方便,因此您始终可以确定特定连接发生的情况。此外,它在服务器上是独一无二的,因此如果您进行扩展,则无需担心冲突。