using System.Net.WebSockets;
namespace CoreAgent.WebSocketTransport.Interfaces;
///
/// WebSocket 连接接口
/// 单一职责:负责网络连接管理
///
public interface IWebSocketConnection : IDisposable
{
///
/// 连接状态
///
WebSocketState State { get; }
///
/// 是否已连接
///
bool IsConnected { get; }
///
/// 连接 WebSocket 服务器
///
/// 服务器地址
/// 取消令牌
Task ConnectAsync(Uri uri, CancellationToken cancellationToken = default);
///
/// 发送消息
///
/// 消息缓冲区
/// 消息类型
/// 是否为消息结束
/// 取消令牌
Task SendAsync(ArraySegment buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken = default);
///
/// 接收消息
///
/// 接收缓冲区
/// 取消令牌
/// 接收结果
Task ReceiveAsync(ArraySegment buffer, CancellationToken cancellationToken = default);
///
/// 关闭连接
///
/// 关闭状态
/// 状态描述
/// 取消令牌
Task CloseAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken = default);
///
/// 强制关闭连接并重新创建WebSocket实例
/// 用于处理CloseReceived状态后无法重连的问题
///
void ForceClose();
}