2013-11-02 48 views
1

我正在尝试为失去连接的客户端重新建立连接过程。在客户端js中,我可以检测到连接丢失并定期尝试重新连接到服务器。当我重新连接时,虽然服务器将使用新的套接字。Node.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连接到外部服务器,我想担任此连接打开一个短暂的时期;等待客户端重新连接。

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

回答

1

为了识别客户机之前,应该与expressjs会议socket.io工作,每个环节都有唯一的ID,并使用许多其他方法将自身与服务器端,(饼干,头..)

当插座对象被传递由 socket.id财产

回调io.on('connection',function(socket),获取用于识别客户

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

也插座都默认一个唯一的ID丢失连接,脚本尝试重新连接,请尝试侦听reconnect,reconnecting,reconnect_failed事件。

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

+0

是否有办法来识别服务器上进行重新连接,因为它仍然具有不同的'id' – megawac

+0

找到我的回答创建一个新的socket:http://stackoverflow.com/questions/9668996/does -socket-io-reconnects-re-run-connect将在浏览器上创建一个唯一的客户端ID。 – megawac