我试图终止连接,例如当用户选择离开命名空间或类似注销时,它不会退出应用程序或触发重新加载。
我已经检查了这个问题@ GitHub,以及这些问题,
他们提出了不同的方法,例如disconnect
,close
等。
根据我自己的实验,
disconnect
,close
方法将套接字的connected
属性设置为false,将disconnected
属性设置为true,如下所示。
我还注意到套接字原型中的destroy
方法:
有人可以描述这些方法的确切含义,以及它们之间的差异......?
旁注:如果有人可以分享对这些方法的文档的任何引用,那就太棒了
答案 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
。