创建WebSocket客户端
一、可配置项
二、支持插件接口
支持ITcpPlugin、IWebSocketPlugin
声明自定义实例类,然后实现IWebSocketPlugin接口,即可实现下列事务的触发。或者继承自WebSocketPluginBase类,重写相应方法即可。
插件方法 | 功能 |
---|---|
OnHandshaking | 当发送握手请求之前 |
OnHandshaked | 当收成功的握手响应之后 |
OnHandleWSDataFrame | 当收到Websocket的数据报文 |
OnClosing | 当收到关闭请求时 |
三、创建WS客户端
3.1 创建常规客户端
WebSocketClient myWSClient = new WebSocketClient();
myWSClient.Setup(new TouchSocketConfig()
.SetRemoteIPHost("ws://127.0.0.1:7789/ws")
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
}));
myWSClient.Connect();
myWSClient.Logger.Message("连接成功");
3.2 创建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("连接成功");
注意
当使用域名连接时,TargetHost为域名,例如连接到IPHost("ws://baidu.com")时,TargetHost应当填写:baidu.com
四、发送数据
因为客户端是从HttpClientBase派生,则可以直接使用扩展方法,进行发送。
4.1 发送文本类消息
myWSClient.SendWithWS("Text");
4.2 发送二进制消息
myWSClient.SendWithWS(new byte[10]);
4.3 发送分包的二进制
例如:发送的数据为9,当设置packageSize为5时,会先发送4作为头包,然后发送9的后继包。
byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myWSClient.SubSendWithWS(data, 5);