Node.js客户端重新连接的唯一标识符
我试图build立一个失去连接的客户重新连接程序。 在客户端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
连接到外部服务器,我想暂时打开这个连接, 等待客户端重新连接。
有没有一个很好的方法来唯一标识节点中的客户端,还是应该在客户端上创build标识符并将其传递给服务器?
为了识别客户端,应该使socket.io
与expressjs会话一起工作,每个会话都有一个唯一的ID,并使用许多其他方法来向服务器端标识自己, (Cookie,标题..)
http://howtonode.org/socket-io-auth
当套接字对象被传递给callbackio.on('connection',function(socket)
, socket.id
property
为了识别丢失连接的客户端,脚本尝试重新连接,请尝试侦听reconnect
, reconnecting
, reconnect_failed
失败的事件。