WebSocketSharp中WebSocket类

Posted x-jonney

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebSocketSharp中WebSocket类相关的知识,希望对你有一定的参考价值。

websocket-sharp.clone,

Version=1.0.2.39869

WebSocket由方法调用事件改为实例化委托调用,两种构造

1.构造函数

第一种

技术图片
 1 //
 2         // 摘要:
 3         //     Initializes a new instance of the WebSocketSharp.WebSocket class with the specified
 4         //     WebSocket URL and subprotocols.
 5         //
 6         // 参数:
 7         //   url:
 8         //     A System.String that represents the WebSocket URL to connect.
 9         //
10         //   cancellationToken:
11         //     The System.Threading.CancellationToken used to cancel websocket operations.
12         //
13         //   fragmentSize:
14         //     Set the size of message packages. Smaller size equals less memory overhead when
15         //     sending streams.
16         //
17         //   onOpen:
18         //     Delegate to be invoked when the WebSocket connection has been established.
19         //
20         //   onClose:
21         //     Delegate to be invoked when the WebSocket connection has been closed.
22         //
23         //   onError:
24         //     Delegate to be invoked when the WebSocketSharp.WebSocket gets an error.
25         //
26         //   protocols:
27         //     An array of System.String that contains the WebSocket subprotocols if any. Each
28         //     value of protocols must be a token defined in http://tools.ietf.org/html/rfc2616#section-2.2.
29         //
30         //   onMessage:
31         //     Delegate to be invoked when the WebSocketSharp.WebSocket receives a message.
32         //
33         // 异常:
34         //   T:System.ArgumentException:
35         //     url is invalid.
36         //     -or-
37         //     protocols is invalid.
38         //
39         //   T:System.ArgumentNullException:
40         //     url is null.
41         public WebSocket(string url, CancellationToken cancellationToken = default(CancellationToken), int fragmentSize = 102392, Func<Task> onOpen = null, Func<CloseEventArgs, Task> onClose = null, Func<MessageEventArgs, Task> onMessage = null, Func<ErrorEventArgs, Task> onError = null, params string[] protocols);
View Code

参数说明:

url:要连接websocket url连接字符串

cancellationToken:用于取消websocket操作,线程

fragmentSize:消息包大小

onOpen:建立连接时调用的委托

onClose:连接关闭时调用的位图

onError:委托在WebSocketSharp时调用。WebSocket得到一个错误。

protocols:协议,每一个协议的值必须是在http://tools.ietf.org/html/rfc2616#section-2.2中定义的令牌

onMessage:WebSocket接收到一条消息

异常:

System.ArgumentException:URL无效或协议无效

System.ArgumentNullException:URL为空

第二种

技术图片
 1 //
 2         // 摘要:
 3         //     Initializes a new instance of the WebSocketSharp.WebSocket class with the specified
 4         //     WebSocket URL and subprotocols.
 5         //
 6         // 参数:
 7         //   url:
 8         //     A System.String that represents the WebSocket URL to connect.
 9         //
10         //   sslAuthConfiguration:
11         //     A ClientSslAuthConfiguration for securing the connection.
12         //
13         //   cancellationToken:
14         //     The System.Threading.CancellationToken used to cancel websocket operations.
15         //
16         //   fragmentSize:
17         //
18         //   onOpen:
19         //     Delegate to be invoked when the WebSocket connection has been established.
20         //
21         //   onClose:
22         //     Delegate to be invoked when the WebSocket connection has been closed.
23         //
24         //   onError:
25         //     Delegate to be invoked when the WebSocketSharp.WebSocket gets an error.
26         //
27         //   protocols:
28         //     An array of System.String that contains the WebSocket subprotocols if any. Each
29         //     value of protocols must be a token defined in http://tools.ietf.org/html/rfc2616#section-2.2.
30         //
31         // 异常:
32         //   T:System.ArgumentException:
33         //     url is invalid.
34         //     -or-
35         //     protocols is invalid.
36         //
37         //   T:System.ArgumentNullException:
38         //     url is null.
39         public WebSocket(string url, ClientSslConfiguration sslAuthConfiguration, CancellationToken cancellationToken = default(CancellationToken), int fragmentSize = 102392, Func<Task> onOpen = null, Func<CloseEventArgs, Task> onClose = null, Func<MessageEventArgs, Task> onMessage = null, Func<ErrorEventArgs, Task> onError = null, params string[] protocols);
View Code

和第一种唯一区别多了一个身份验证sslAuthConfiguration

2.属性

Cookies:获取websocket中http cookie

Extensions:获取websocket扩展

IsSecure:获取是否安全连接

Origin:获取或设置http标头

Protocol:获取子协议

ReadyState:获取联系状态,分别是Connecting、Open、Closing和Closed四个状态

WaitTime:获取设置ping和关闭响应时间,毫秒

3.方法

Close()、Close(CloseStatusCode code)、Close(CloseStatusCode code, string reason);:分为直接关闭、状态码关闭、状态码+关闭原因三种方式

bool Connect():建立连接

Dispose():关闭连接,条件是状态码是Away

Uri GetUrl():获取URL

bool IsAlive():是否活动状态

bool Ping()、bool Ping(string message):发送ping、发送指定ping消息

boo Send():发送数据分为二进制、数据流、字符串以及数据流+长度四种参数

SetCookie(Cookie cookie):设置cookie

SetCredentials(string username, string password, bool preAuth):设置HTTP身份验证用户名、密码和认证

SetProxy(string url, string username, string password):设置HTTP代理

以上是关于WebSocketSharp中WebSocket类的主要内容,如果未能解决你的问题,请参考以下文章

Websockets:从NodeJS websocket服务器到带有WebSocketSharp的C#客户端的多个响应

WebSocketSharp 的最大短信大小是多少?

创建 websocket 连接时出现 System.Net.Sockets.SocketException

Json请求错误而不是常规错误

如何将数据从 Web 套接字服务器发送到客户端?

如何在类中实现 websocket?