我正在构建一个应用程序,我希望在应用程序运行期间为每个连接提供唯一标识符,我想知道socket.id是否适用于此。例如。如果用户1与应用程序断开连接,则稍后连接的用户2不应具有用户1之前具有的相同socket.id,即使用户1不再连接。 socket id是整个时间socket.io正在监听服务器吗?
答案 0 :(得分:6)
假设您正在使用socket.io@0.9.x
(这是NPM中的当前版本),则为每个连接/客户端生成新ID的代码can be found here。
我认为您可以放心地假设每个套接字ID都是唯一的。
答案 1 :(得分:2)
查看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就是唯一的