【发布时间】:2021-09-15 11:40:54
【问题描述】:
TLDR:未确认的消息是否会在 nodejs tcp 套接字中重置超时处理程序? 如果我们发送未收到的消息或调用超时监听器,socket.setTimeout(60 * 1000) 是否会重置?
加长版:
假设我们在 Nodejs 中创建了一个 tcp 服务器和一个客户端,我们想检测其中一个套接字何时失去互联网连接,并且由于 tcp 不会自动关闭,我们实现了一个 ping pong(客户端发送每分钟对服务器进行一次 ping,服务器用 pong 回复),现在要处理检查连接是否确实断开的逻辑我使用的方法是在我们存储来自客户端的最后一次 ping 时间的服务器上,每 2 分钟检查一次如果它们中的任何一个都超过 2 分钟,我们就宣布连接失效并销毁套接字。在客户端,我们设置了 10 秒的超时时间(socket.setTimeout(10000)),当收到一个 pong 时重置它,它调用超时处理程序,它声明连接断开,我的问题是:假设已经死了,所以它不会确认客户端的 ping,如果超时的计时器比 ping 间隔长,这会导致超时吗?
【问题讨论】:
标签: javascript node.js sockets tcp