【问题标题】:Difference between disconnect, close & destroy methods of socket.iosocket.io的disconnect、close和destroy方法的区别
【发布时间】:2015-11-17 20:10:54
【问题描述】:

我正在使用 开发一个简单的聊天应用程序。

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

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

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

根据我自己基于这些的实验,

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

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

谁能描述一下这些方法的具体用途,以及它们之间有何不同......?


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

【问题讨论】:

  • 哈哈哈,socket.io 的合理文档?不会发生。
  • 哈哈,年龄不太大。

标签: node.js socket.io javascript node.js socket.io


【解决方案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

【讨论】:

    猜你喜欢
    • 2014-05-31
    • 2019-12-21
    • 2014-05-02
    • 2013-11-03
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    相关资源
    最近更新 更多