猿问

处理 Go 中的连接重置错误

在普通的 Go HTTP 处理程序上,如果我在仍然写入响应的同时断开客户端的连接,http.ResponseWritter.Write将返回一个错误消息,如write tcp 127.0.0.1:60702: connection reset by peer.


现在从syscall包中,我有sysca.ECONNRESET,其中包含消息connection reset by peer,所以它们并不完全相同。


我怎样才能匹配它们,所以我知道如果它发生了不要惊慌?在其他场合我一直在做


if err == syscall.EAGAIN {

  /* handle error differently */

}

例如,这工作得很好,但我不能用syscall.ECONNRESET.


更新:


因为我迫切需要一个解决方案,所以暂时我会做这个非常肮脏的黑客:


if strings.Contains(err.Error(), syscall.ECONNRESET.Error()) {

    println("it's a connection reset by peer!")

    return

}


天涯尽头无女友
浏览 331回答 3
3回答
随时随地看视频慕课网APP

相关分类

Go
我要回答