问题链接: github.com/name5566/le…
原因就是加了ssl证书开启wss访问后链接变成了*tls.Conn, 断线重连后断言错误,导致无法登录,根据下面代码修改后可以正常使用.
根据提示的位置修改如下代码:
func (wsConn *WSConn) doDestroy() {
underlyingConn := wsConn.conn.UnderlyingConn()
switch conn := underlyingConn.(type) {
case *net.TCPConn:
conn.SetLinger(0) // 对 TCP 连接设置 Linger
case *tls.Conn:
// 如果是 TLS 连接,可以获取底层的 TCP 连接并设置 Linger
if tcpConn, ok := conn.NetConn().(*net.TCPConn); ok {
tcpConn.SetLinger(0)
}
default:
// 其他类型的连接处理
log.Debug("Unsupported connection type")
}
wsConn.conn.Close()
if !wsConn.closeFlag {
close(wsConn.writeChan)
wsConn.closeFlag = true
}
}