我使用以下命令连接到 NodeJs 中的套接字服务器:
client = net.createConnection()
我怎样才能正确断开与服务器的连接?
我试过client.end()
了,甚至client.destroy()
但是当我使用 netstat 检查连接状态时,它显示连接处于状态 FIN_WAIT2。
如何完全关闭和销毁连接?
我使用以下命令连接到 NodeJs 中的套接字服务器:
client = net.createConnection()
我怎样才能正确断开与服务器的连接?
我试过client.end()
了,甚至client.destroy()
但是当我使用 netstat 检查连接状态时,它显示连接处于状态 FIN_WAIT2。
如何完全关闭和销毁连接?
net.createConnection()
返回一个 Socket 对象。client.destroy()
是你想要做的。
来源:http ://nodejs.org/docs/latest/api/net.html#socket.destroy
这是默认的 TCP 连接终止顺序,
通过调用client.end()
节点js会向服务端发送FIN包,服务端会响应一个FIN包给客户端,接受socket终止。
根据 nodejs 文档,socket.end
它的作用是,
半关闭插座。即,它发送一个 FIN 数据包。服务器可能仍会发送一些数据。
当收到 FIN 数据包时,从客户端到服务器的连接会自动关闭socket.on('close', .. )
并被触发并返回 ACK。
因此,通过同意服务器和客户端来终止连接,以便服务器能够在关闭连接之前发送可能需要的数据。
但是在调用socket.destroy
的时候,客户端连接会被破坏,没有强行接收到FIN包。最好的做法是socket.destroy
尽可能避免调用。
参考:
我在 GNU/Linux 下安装了 nodejs 版本 11.15.0;在此配置中断开类似 telnet 的客户端的唯一方法是调用
socket.destroy()
其他方法socket
根本不存在(例如:close()
或disconnect()
);发射close
或end
事件也不起作用。