[英]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
为了确定失去连接的客户端,并且脚本尝试重新连接,请尝试监听reconnect
, reconnecting
, reconnect_failed
事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.