【发布时间】:2017-03-03 11:43:11
【问题描述】:
我正在使用 Redis 缓存层在多个实例上运行 Node.js + Socket.io 应用程序。我想知道每个连接的 socket.id 字段是否在所有实例中都是唯一的。一个实例上的 socket.id 是否有可能与另一个实例上的 socket.id 相同?
据我所知,socket.id 是使用以下代码生成的:
/**
* Interface to a `Client` for a given `Namespace`.
*
* @param {Namespace} nsp
* @param {Client} client
* @api public
*/
function Socket(nsp, client, query){
this.nsp = nsp;
this.server = nsp.server;
this.adapter = this.nsp.adapter;
this.id = nsp.name !== '/' ? nsp.name + '#' + client.id : client.id;
this.client = client;
this.conn = client.conn;
this.rooms = {};
this.acks = {};
this.connected = true;
this.disconnected = false;
this.handshake = this.buildHandshake(query);
this.fns = [];
}
我不确定它在创建 id 字段时实际在做什么。
【问题讨论】:
-
这听起来很像XY Problem。为什么 Socket.id 唯一性很重要?你能描述一下你的实际问题是什么吗?这将增加获得有用答案的机会。