diff --git a/transport/internet/tcp/dialer.go b/transport/internet/tcp/dialer.go index bf50ed72..19b3f6b4 100644 --- a/transport/internet/tcp/dialer.go +++ b/transport/internet/tcp/dialer.go @@ -24,8 +24,14 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me tlsConfig := config.GetTLSConfig(tls.WithDestination(dest)) if fingerprint := tls.GetFingerprint(config.Fingerprint); fingerprint != nil { conn = tls.UClient(conn, tlsConfig, fingerprint) - if err := conn.(*tls.UConn).HandshakeContext(ctx); err != nil { - return nil, err + if len(tlsConfig.NextProtos) == 1 && tlsConfig.NextProtos[0] == "http/1.1" { + if err := conn.(*tls.UConn).WebsocketHandshakeContext(ctx); err != nil { + return nil, err + } + } else { + if err := conn.(*tls.UConn).HandshakeContext(ctx); err != nil { + return nil, err + } } } else { conn = tls.Client(conn, tlsConfig)