kerryjiang / WebSocket4Net

A popular .NET WebSocket Client
752 stars 272 forks source link

WSS无法连接 #187

Closed qinxg closed 1 month ago

qinxg commented 3 years ago

var x = new Log2(); WebSocket webSocket = new WebSocket("wss://ws.okex.com:8443/ws/v5/public", x); var isok = webSocket.OpenAsync().Result;

System.Net.Sockets.SocketException (11004): 请求的名称有效,但是找不到请求的类型的数据。 at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state) --- End of stack trace from previous location --- at SuperSocket.Client.SocketConnector.ConnectAsync(EndPoint remoteEndPoint, ConnectState state, CancellationToken cancellationToken) in F:\Code\github\SuperSocket\src\SuperSocket.Client\SocketConnector.cs:line 52

qinxg commented 3 years ago

我复制了你的代码 然后直接外边些了一次调用也不成功 报错是 System.NotSupportedException:“This protocol version is not supported.” ` System.NotSupportedException HResult=0x80131515 Message=This protocol version is not supported. Source=System.Net.Sockets StackTrace: at System.Net.Sockets.Socket.Connect(String host, Int32 port) at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) at Demo.Program.Main(String[] args) in F:\Code\github\SuperSocket\src\Demo\Program.cs:line 42

`

如果使用ConnectAsync (和你代码实现一样) 则报错与你之前一样 请求的名称有效,但是找不到请求的类型的数据。

var uri = new Uri("wss://ws.okex.com:8443/ws/v5/public"); EndPoint remoteEndPoint = new DnsEndPoint(uri.Host, uri.Port); var socket = new Socket(remoteEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect(remoteEndPoint);

这个地址 wss://ws.okex.com:8443/ws/v5/public 在之前那个老版本的websocket4net 是可以的

我看了你的底层实现 相当于是第一次做了SOCKETCONNECT 第二次做SSL的AUTH 现在出错是在第一步了

kerryjiang commented 1 month ago

Fixed this problem weeks ago.