说明
支持Ssl的WebSocket客户端。
可配置项
继承HttpClient。
支持插件接口
支持ITcpPlugin、IWebSocketPlugin
创建WS客户端
WebSocketClient myWSClient = new WebSocketClient();//myWSClient.Received += this.MyWSClient_Received;//myWSClient.Handshaked += this.MyWSClient_Handshaked;myWSClient.Setup(new TouchSocketConfig().SetRemoteIPHost(this.textBox3.Text).ConfigureContainer(a =>{a.SetSingletonLogger(new LoggerGroup(new EasyLogger(this.ShowMsg), new FileLogger()));}));myWSClient.Connect();myWSClient.Logger.Message("连接成功");
创建WSs客户端
当需要连接到由证书机构颁发的网址(例如:小程序、物联网等)时,仅需要设置url即可。
wss://127.0.0.1:7789/ws
当连接自定义证书的Ssl:wss://127.0.0.1:7789/ws
WebSocketClient myWSClient = new WebSocketClient();myWSClient.Setup(new TouchSocketConfig().SetRemoteIPHost(new IPHost("wss://127.0.0.1:7789/ws")).SetClientSslOption(new ClientSslOption(){ClientCertificates = new X509CertificateCollection() { new X509Certificate2("RRQMSocket.pfx", "RRQMSocket") },SslProtocols = SslProtocols.Tls12,TargetHost = "127.0.0.1",CertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { return true; }})).Connect();Console.WriteLine("连接成功");while (true){myWSClient.SendWithWS(Console.ReadLine());}
注意:当使用域名连接时,TargetHost为域名,例如连接到IPHost(“ws://baidu.com”)时,TargetHost应当填写:baidu.com
发送数据
将client对象转为HttpClient,即可使用扩展方法,进行发送。
作为一条消息发送
将一个数据分包发送
例如:发送的数据为{0,1,2,3,4,5,6,7,8,9},当设置packageSize为5时,会先发送{0,1,2,3,4}作为头包,然后发送{5,6,7,8,9}的后继包。
接收数据
订阅Received事件实现,或使用插件实现。
client.Received += (c, e) =>{switch (e.Opcode){case WSDataType.Cont:break;case WSDataType.Text:break;case WSDataType.Binary:break;case WSDataType.Close:break;case WSDataType.Ping:break;case WSDataType.Pong:break;default:break;}};
附加插件实现
该操作和服务器一致。
