using CoreAgent.WebSocketTransport.Interfaces; using CoreAgent.WebSocketTransport.Services; namespace CoreAgent.WebSocketTransport.Examples; /// /// 组合模式使用示例 /// 展示如何使用 IWebSocketTransport 和 IMessageChannelManager 的组合 /// public class CompositionPatternExample { private readonly IWebSocketTransport _webSocketTransport; private readonly IMessageChannelManager _channelManager; public CompositionPatternExample(IWebSocketTransport webSocketTransport, IMessageChannelManager channelManager) { _webSocketTransport = webSocketTransport; _channelManager = channelManager; } /// /// 示例:基本使用流程 /// public async Task BasicUsageAsync() { // 1. 连接服务器 await _webSocketTransport.ConnectAsync(); Console.WriteLine($"连接状态: {_webSocketTransport.IsConnected}"); // 2. 发送消息 - 通过通道管理器 await _channelManager.SendChannel.WriteAsync("Hello World"); await _channelManager.SendChannel.WriteAsync(new { type = "chat", message = "Hello" }); // 3. 接收消息 - 通过通道管理器 _ = Task.Run(async () => { while (!_channelManager.ReceiveChannel.IsCompleted) { if (_channelManager.ReceiveChannel.TryRead(out var message)) { Console.WriteLine($"收到消息: {message}"); } await Task.Delay(100); } }); // 4. 关闭连接 await _webSocketTransport.CloseAsync(); } /// /// 示例:优先级消息处理 /// public async Task PriorityMessageExampleAsync() { await _webSocketTransport.ConnectAsync(); // 发送普通消息 await _channelManager.SendChannel.WriteAsync("Normal message"); // 发送优先级消息 //await _channelManager.PriorityChannel.WriteAsync("Priority message"); // 等待消息发送完成 await Task.Delay(1000); await _webSocketTransport.CloseAsync(); } /// /// 示例:连接状态监控 /// public async Task ConnectionMonitoringExampleAsync() { await _webSocketTransport.ConnectAsync(); // 监控连接状态和心跳 while (_webSocketTransport.IsConnected) { Console.WriteLine($"连接状态: {_webSocketTransport.IsConnected}"); Console.WriteLine($"最后心跳: {_webSocketTransport.LastHeartbeat}"); await Task.Delay(5000); } } }