go leaf框架加wss时候出现重连失败

68 阅读1分钟

问题链接: 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
	}
}