【发布时间】:2014-01-24 14:59:15
【问题描述】:
我正在构建一个应用程序,在该应用程序运行期间,我希望每个连接都有一个唯一标识符,我想知道 socket.id 是否适用于此。例如。如果用户 1 与应用程序断开连接,则稍后连接的用户 2 不应具有与用户 1 之前相同的 socket.id,即使用户 1 不再连接也是如此。在 socket.io 监听服务器的整个过程中,socket id 是唯一的吗?
【问题讨论】:
我正在构建一个应用程序,在该应用程序运行期间,我希望每个连接都有一个唯一标识符,我想知道 socket.id 是否适用于此。例如。如果用户 1 与应用程序断开连接,则稍后连接的用户 2 不应具有与用户 1 之前相同的 socket.id,即使用户 1 不再连接也是如此。在 socket.io 监听服务器的整个过程中,socket id 是唯一的吗?
【问题讨论】:
假设您正在使用socket.io@0.9.x(这是 NPM 中的当前版本),为每个连接/客户端 can be found here 生成新 id 的代码。
我认为您可以放心地假设每个套接字 id 都是唯一的。
【讨论】:
查看 socket.io 的代码,似乎用户的 id 唯一标识了一个套接字客户端。例如,参见Socket.connect 的代码:
Socket.prototype.onconnect = function(){
debug('socket connected - writing packet');
this.join(this.id);
this.packet({ type: parser.CONNECT });
this.nsp.connected[this.id] = this;
};
在最后一行,id 用于跟踪已连接套接字的哈希。由于您需要您的 id 是唯一的,因此只要服务器没有重新启动,每个 id 都是唯一的
【讨论】: