diff --git a/internal/nodes/client_conn.go b/internal/nodes/client_conn.go index d7f10c2..678452f 100644 --- a/internal/nodes/client_conn.go +++ b/internal/nodes/client_conn.go @@ -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 }