断开,关闭和放大之间的区别破坏socket.io

时间:2015-11-17 20:10:55

标签: javascript node.js socket.io

我正在使用&

我试图终止连接,例如当用户选择离开命名空间或类似注销时,它不会退出应用程序或触发重新加载。

我已经检查了这个问题@ GitHub,以及这些问题,

他们提出了不同的方法,例如disconnectclose等。

根据我自己的实验,

disconnectclose方法将套接字的connected属性设置为false,将disconnected属性设置为true,如下所示。

  

enter image description here

我还注意到套接字原型中的destroy方法:

  

enter image description here

有人可以描述这些方法的确切含义,以及它们之间的差异......?

旁注:如果有人可以分享对这些方法的文档的任何引用,那就太棒了

1 个答案:

答案 0 :(得分:1)

这些是VSCODE中的typescript definitions

    /**
     * Disconnects the socket manually
     * @return This Socket
     */
    close():Socket;

    /**
     * @see close()
     */
    disconnect():Socket;

不太有用。查看close的Socket.IO源代码:

/**
 * Closes the underlying connection.
 *
 * @api private
 */
Client.prototype.close = function(){
  if ('open' == this.conn.readyState) {
    debug('forcing transport close');
    this.conn.close();
    this.onclose('forced server close');
  }
};

对于disconnect

/**
 * Disconnects from all namespaces and closes transport.
 *
 * @api private
 */
Client.prototype.disconnect = function(){
  for (var id in this.sockets) {
    if (this.sockets.hasOwnProperty(id)) {
      this.sockets[id].disconnect();
    }
  }
  this.sockets = {};
  this.close();
};

看起来,disconnect在执行其他断开连接工作后正在呼叫close。我建议您在要关闭时致电disconnect,而不仅仅是致电close