diff --git a/ws.go b/ws.go index 6e2a958..233be77 100644 --- a/ws.go +++ b/ws.go @@ -63,8 +63,12 @@ func (tr *wsTransporter) Handshake(conn net.Conn, options ...HandshakeOption) (n if path == "" { path = defaultWSPath } - url := url.URL{Scheme: "ws", Host: opts.Host, Path: path} - return websocketClientConn(url.String(), conn, nil, wsOptions) + urlObj := url.URL{Scheme: "ws", Host: opts.Host, Path: path} + urlStr, errUnescape := url.QueryUnescape(urlObj.String()) + if errUnescape != nil { + log.Logf("[ws] URL QueryUnescape Error URL.String() -> %s", urlObj.String()) + } + return websocketClientConn(urlStr, conn, nil, wsOptions) } type mwsTransporter struct { @@ -225,8 +229,12 @@ func (tr *wssTransporter) Handshake(conn net.Conn, options ...HandshakeOption) ( if path == "" { path = defaultWSPath } - url := url.URL{Scheme: "wss", Host: opts.Host, Path: path} - return websocketClientConn(url.String(), conn, opts.TLSConfig, wsOptions) + urlObj := url.URL{Scheme: "wss", Host: opts.Host, Path: path} + urlStr, errUnescape := url.QueryUnescape(urlObj.String()) + if errUnescape != nil { + log.Logf("[ws] URL QueryUnescape Error URL.String() -> %s", urlObj.String()) + } + return websocketClientConn(urlStr, conn, opts.TLSConfig, wsOptions) } type mwssTransporter struct {