繁体   English   中英

客户端用于重新连接的Node.js唯一标识符

[英]Node.js unique identifier for client for reconnections

我正在尝试为丢失连接的客户端建立重新连接过程。 在客户端js中,我可以检测到连接断开的时间,并定期尝试重新连接到服务器。 当我重新连接服务器时,服务器将使用新的套接字。

在客户端上,这是我的重新连接逻辑

var socket = io.connect(ip, {
  'reconnect': true, //will create a new socket on the server
  'reconnection delay': options.retryInterval,
  'max reconnection attempts': 10
});

socket.on("disconnect", function() {
   this.connected = false;
   this.autoretry();
});

//establish the connection - similiar to the reconnect method
socket.emit("connect", this.options);

//....
autoretry: function() {
    if(this.connected) {return;};
    var next = this.__retry *= this.options.retryScalar;
    this.socket.emit("retry", this.connect.options);
    return _.delay(this.autoretry, next, this);
}

问题是每个客户端都有自己的与外部服务器的tls连接,我想在短时间内保持此连接的打开状态; 等待客户端是否重新连接。

是否有一种在节点中唯一标识客户端的好方法,还是应该在客户端上创建标识符并将其传递给服务器?

为了识别客户端,应使socket.io与expressjs会话一起使用,每个会话都有一个唯一的ID,并使用许多其他方法在服务器端(cookies,header ..)标识自己

http://howtonode.org/socket-io-auth

当套接字对象传递给回调io.on('connection',function(socket) ,通过socket.id属性访问时,套接字默认情况下也具有唯一的id

为了确定失去连接的客户端,并且脚本尝试重新连接,请尝试监听reconnectreconnectingreconnect_failed事件。

https://github.com/LearnBoost/socket.io/wiki/Exposed-events

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM