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

标签 javascript node.js express socket.io

我正在尝试为失去连接的客户端构建重新连接过程。在客户端 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 连接到外部服务器,我想保持此连接短暂打开;等待客户端是否重新连接。

是否有一种好方法可以在 Node 中唯一标识客户端,或者我应该在客户端上创建标识符并将其传递给服务器?

最佳答案

为了识别客户端,您应该使 socket.io 与 expressjs session 一起工作,每个 session 都有一个唯一的 id,并使用许多附加方法向服务器端标识自身,(cookies、headers..)

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

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

要识别丢失连接的客户端,并且脚本尝试重新连接,请尝试监听 reconnectreconnectingreconnect_failed 事件。

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

关于javascript - Node.js 客户端重新连接的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19747131/

相关文章:

javascript - 您是否需要在 <script> 标签中指定文本/javascript?

javascript - 如果瞄准镜没用了,会被清理吗?

node.js - 最佳检查 IP 是否在子网中

node.js - express.js 上的过滤器

javascript - Node.js API 与 express 和 mysql - 获取记录计数、页码……并提供分页

javascript - 像 JQuery 一样将整个代码放在一起

javascript - amCharts 不显示 json 数据

node.js - Expo 在使用 npm 安装期间卡住,但使用 yarn 安装并且不起作用

node.js - IBM bluemix 上 NodeRED 中的 WebSocket header

javascript - Express 中间件没有效果