当客户端因为某些问题异常关闭连接时,可以判断关闭连接的异常类型
通过调用websocket.IsCloseError或websocket.IsUnexpectedCloseError即可
if websocket.IsCloseError(err, websocket.Error类型)
fmt.Printf("预料到的错误:%s",err.Error())
if websocket.IsUnexpectedcloseError(err)
fmt.Printf("未预料的错误")
其中github源码如下文章来源:https://www.toymoban.com/news/detail-562483.html
func IsCloseError(err error, codes ...int) bool {
if e, ok := err.(*CloseError); ok {
for _, code := range codes {
if e.Code == code {
return true
}
}
}
return false
}
// IsUnexpectedCloseError returns boolean indicating whether the error is a
// *CloseError with a code not in the list of expected codes.
func IsUnexpectedCloseError(err error, expectedCodes ...int) bool {
if e, ok := err.(*CloseError); ok {
for _, code := range expectedCodes {
if e.Code == code {
return false
}
}
return true
}
return false
}
异常类型如下文章来源地址https://www.toymoban.com/news/detail-562483.html
// Close codes defined in RFC 6455, section 11.7.
const (
CloseNormalClosure = 1000
CloseGoingAway = 1001
CloseProtocolError = 1002
CloseUnsupportedData = 1003
CloseNoStatusReceived = 1005
CloseAbnormalClosure = 1006
CloseInvalidFramePayloadData = 1007
ClosePolicyViolation = 1008
CloseMessageTooBig = 1009
CloseMandatoryExtension = 1010
CloseInternalServerErr = 1011
CloseServiceRestart = 1012
CloseTryAgainLater = 1013
CloseTLSHandshake = 1015
)
到了这里,关于【go】gorilla/websocket如何判断客户端强制断开连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!