Skip to content

Latest commit

 

History

History
7 lines (7 loc) · 708 Bytes

HeartBeat.md

File metadata and controls

7 lines (7 loc) · 708 Bytes

HeartBeat

发现问题

使用 go 语言中的socket编程,调试发现客户端意外终止进程,未经过四次挥手,服务端的连接依然存在(资源未释放)

解决办法

使用 go 语言net包中Conn对象的SetDeadline()方法,设置timeout,如果超时未接收到消息,在读消息队列的时候,就会获取到一个error,获取到error后,调用Conn.Close()即可关闭连接,释放资源。

总结

在一定时间内如果没有接收到客户端发送的消息,并且利用setDeadline()方法捕捉到error后,服务端断开连接,释放资源。go socket 编程中如果服务端有这个过程,那么就认为这个服务端是有心跳的。