向客户端写入数据超时时立即关闭连接

This commit is contained in:
刘祥超
2022-12-10 19:51:05 +08:00
parent 60a8de13e7
commit ade979a725

View File

@@ -115,7 +115,7 @@ func (this *ClientConn) Read(b []byte) (n int, err error) {
func (this *ClientConn) Write(b []byte) (n int, err error) {
// 设置超时时间
_ = this.rawConn.SetWriteDeadline(time.Now().Add(30 * time.Second)) // TODO 时间可以设置
_ = this.rawConn.SetWriteDeadline(time.Now().Add(60 * time.Second)) // TODO 时间可以设置
n, err = this.rawConn.Write(b)
if n > 0 {
@@ -128,6 +128,14 @@ func (this *ClientConn) Write(b []byte) (n int, err error) {
}
}
// 如果是写入超时,则立即关闭连接
if err != nil && os.IsTimeout(err) {
conn, ok := this.rawConn.(LingerConn)
if ok {
_ = conn.SetLinger(0)
}
}
return
}