IWebsocketClient 接口完全指南:gh_mirrors/webso/websocket-client 开发必备
IWebsocketClient 接口完全指南gh_mirrors/webso/websocket-client 开发必备【免费下载链接】websocket-client .NET/C# websocket client library项目地址: https://gitcode.com/gh_mirrors/webso/websocket-clientgh_mirrors/webso/websocket-client 是一个功能强大的 .NET/C# WebSocket 客户端库而 IWebsocketClient 接口作为其核心组件提供了简单易用且功能完善的 WebSocket 通信功能包括内置的重连机制和错误处理是开发 WebSocket 应用的必备工具。一、IWebsocketClient 接口简介IWebsocketClient 接口定义了 WebSocket 客户端的核心功能位于 src/Websocket.Client/IWebsocketClient.cs 文件中。它继承自 IDisposable 接口提供了发送消息、连接管理、事件订阅等一系列方法和属性使开发者能够轻松实现 WebSocket 通信。1.1 核心功能概览IWebsocketClient 接口的主要功能包括发送文本和二进制消息管理 WebSocket 连接连接、断开、重连订阅接收消息、重连和断开事件配置连接超时、重连策略等参数二、消息发送方法详解IWebsocketClient 提供了多种发送消息的方法以满足不同的场景需求。2.1 队列式发送方法队列式发送方法将消息插入发送队列实际发送在另一个线程中进行避免了并发发送的问题bool Send(string message)发送文本消息bool Send(byte[] message)发送二进制消息bool Send(ArraySegmentbyte message)发送二进制消息bool Send(ReadOnlySequencebyte message)发送二进制消息这些方法返回一个 bool 值表示消息是否成功写入队列。2.2 即时发送方法即时发送方法不使用发送队列直接发送消息在 .NET Framework 平台上需注意并发发送的问题Task SendInstant(string message)即时发送文本消息Task SendInstant(byte[] message)即时发送二进制消息2.3 文本消息优化发送对于已转换为字节数组的文本消息可以使用以下方法避免双重序列化bool SendAsText(byte[] message)bool SendAsText(ArraySegmentbyte message)bool SendAsText(ReadOnlySequencebyte message)三、连接管理与控制IWebsocketClient 提供了完善的连接管理功能包括连接、断开、重连等操作。3.1 连接启动Task Start()在后台线程开始监听 WebSocket 流连接错误时不会抛出异常而是通过DisconnectionHappened事件流和日志记录Task StartOrFail()在后台线程开始监听 WebSocket 流连接错误时抛出异常采用快速失败策略3.2 连接停止Taskbool Stop(WebSocketCloseStatus status, string statusDescription)使用自定义关闭代码停止/关闭 WebSocket 连接方法不会抛出异常仅记录日志并将客户端标记为已关闭返回 true 表示成功启动关闭Taskbool StopOrFail(WebSocketCloseStatus status, string statusDescription)使用自定义关闭代码停止/关闭 WebSocket 连接方法可能抛出异常但无论如何客户端都会被标记为已关闭返回 true 表示成功启动关闭3.3 强制重连Task Reconnect()强制重连关闭当前 WebSocket 流并与服务器建立新连接连接错误时不会抛出异常而是无限期尝试重连Task ReconnectOrFail()强制重连关闭当前 WebSocket 流并与服务器建立新连接连接错误时抛出异常不进行其他重连尝试四、事件订阅与数据接收IWebsocketClient 提供了多个可观察流用于订阅接收消息、重连和断开事件。4.1 接收消息流IObservableResponseMessage MessageReceived接收消息流原始格式通过订阅此流开发者可以获取从服务器接收到的消息。4.2 重连事件流IObservableReconnectionInfo ReconnectionHappened重连事件流在新连接后触发订阅此流可以获取重连相关的信息。4.3 断开事件流IObservableDisconnectionInfo DisconnectionHappened断开事件流在连接丢失后触发通过订阅此流开发者可以处理连接断开的情况。五、配置参数设置IWebsocketClient 提供了多个可配置的参数用于调整客户端的行为。5.1 连接超时设置TimeSpan ConnectTimeout连接新客户端的最长等待时间默认值为 5 秒5.2 重连超时设置TimeSpan? ReconnectTimeout如果没有消息从服务器传来等待多久后重连设为 null 可禁用此功能默认值为 1 分钟TimeSpan? ErrorReconnectTimeout如果上次重连失败等待多久后重连设为 null 可禁用此功能默认值为 1 分钟TimeSpan? LostReconnectTimeout如果连接因暂时性错误而丢失等待多久后重连设为 null 可禁用此功能默认值为 null/禁用立即重连5.3 功能开关bool IsReconnectionEnabled启用或禁用重连功能默认启用bool IsTextMessageConversionEnabled启用或禁用文本消息从二进制到字符串的转换通过 MessageEncoding 属性默认启用bool IsStreamDisposedAutomatically启用或禁用发送数据后自动释放 MemoryStream仅适用于二进制响应设为 false 允许直接访问流但需自行处理释放默认启用5.4 其他配置string? Name获取或设置当前 WebSocket 客户端实例的名称用于日志记录如果使用多个并行 WebSocket 客户端并希望区分它们Encoding? MessageEncoding文本消息的目标编码六、状态属性与辅助方法IWebsocketClient 提供了多个状态属性用于获取客户端的当前状态。6.1 运行状态bool IsStarted返回 Start() 方法是否至少被调用过一次如果未启动或已释放则返回 falsebool IsRunning返回客户端是否正在运行并已连接到服务器bool TextSenderRunning返回文本消息发送器是否正在运行bool BinarySenderRunning返回二进制消息发送器是否正在运行bool IsInsideLock指示是否有任何线程已进入锁6.2 辅助方法void StreamFakeMessage(ResponseMessage message)流式传输/发布假消息通过 MessageReceived 可观察对象用于测试目的以模拟服务器消息new void Dispose()终止 WebSocket 连接并清理所有资源七、IWebsocketClient 接口的实现类WebsocketClient 类是 IWebsocketClient 接口的实现位于 src/Websocket.Client/WebsocketClient.cs 文件中。它实现了接口定义的所有方法和属性提供了完整的 WebSocket 客户端功能。开发者可以通过创建 WebsocketClient 实例来使用 IWebsocketClient 接口的功能例如using IWebsocketClient client new WebsocketClient(url);八、使用示例以下是一个简单的使用 IWebsocketClient 的示例来自 test_integration/Websocket.Client.Sample/Program.csusing (IWebsocketClient client new WebsocketClient(url, logger, factory)) { // 订阅接收消息事件 client.MessageReceived.Subscribe(msg { Console.WriteLine($Received message: {msg.Text}); }); // 启动连接 await client.Start(); // 发送消息 client.Send(Hello, WebSocket!); // 等待用户输入保持连接 Console.ReadLine(); }九、总结IWebsocketClient 接口为 gh_mirrors/webso/websocket-client 项目提供了核心的 WebSocket 客户端功能通过它开发者可以轻松实现 WebSocket 通信包括消息发送、连接管理、事件订阅等。掌握 IWebsocketClient 接口的使用将有助于开发出稳定、高效的 WebSocket 应用。无论是新手还是有经验的开发者都可以通过本文档快速了解和使用 IWebsocketClient 接口充分发挥 gh_mirrors/webso/websocket-client 项目的优势。【免费下载链接】websocket-client .NET/C# websocket client library项目地址: https://gitcode.com/gh_mirrors/webso/websocket-client创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考