using System.ComponentModel.DataAnnotations; namespace CoreAgent.WebSocketTransport.Models; /// /// WebSocket 客户端配置模型 /// 支持通过 IConfiguration 绑定,提供合理的默认值 /// public class WebSocketConfig { /// /// WebSocket 服务器地址 /// [Required(ErrorMessage = "WebSocket URL 不能为空")] [Url(ErrorMessage = "WebSocket URL 格式不正确")] public string Url { get; set; } = "wss://example.com/ws"; /// /// 连接超时时间(毫秒) /// [Range(1000, 300000, ErrorMessage = "超时时间必须在 1000-300000 毫秒之间")] public int TimeoutMs { get; set; } = 30000; /// /// 批量发送时间窗口(毫秒) /// [Range(10, 10000, ErrorMessage = "批量超时时间必须在 10-10000 毫秒之间")] public int BatchTimeoutMs { get; set; } = 100; /// /// 最大批量大小(条消息) /// [Range(1, 10000, ErrorMessage = "最大批量大小必须在 1-10000 之间")] public int MaxBatchSize { get; set; } = 100; /// /// 是否启用自动重连功能 /// public bool EnableAutoReconnect { get; set; } = true; /// /// 最大重连尝试次数 /// [Range(0, 100, ErrorMessage = "最大重连次数必须在 0-100 之间")] public int MaxReconnectAttempts { get; set; } = 5; /// /// 队列容量(已废弃,请使用 SendChannelCapacity、ReceiveChannelCapacity、PriorityChannelCapacity) /// [Range(10, 100000, ErrorMessage = "队列容量必须在 10-100000 之间")] public int QueueCapacity { get; set; } = 10000; /// /// 发送通道容量 /// [Range(10, 100000, ErrorMessage = "发送通道容量必须在 10-100000 之间")] public int SendChannelCapacity { get; set; } = 1000; /// /// 接收通道容量 /// [Range(10, 100000, ErrorMessage = "接收通道容量必须在 10-100000 之间")] public int ReceiveChannelCapacity { get; set; } = 1000; /// /// 优先级通道容量 /// [Range(10, 10000, ErrorMessage = "优先级通道容量必须在 10-10000 之间")] public int PriorityChannelCapacity { get; set; } = 100; /// /// 缓存消息 TTL(分钟) /// [Range(1, 1440, ErrorMessage = "缓存 TTL 必须在 1-1440 分钟之间")] public int CacheTtlMinutes { get; set; } = 5; /// /// 最大分包大小(字节),超过此大小的消息将被分包发送 /// 建议值:32KB-128KB,默认64KB /// [Range(1024, 1024 * 1024, ErrorMessage = "分包大小必须在 1KB-1MB 之间")] public int? MaxChunkSize { get; set; } = 64 * 1024; // 64KB /// /// 分包发送延迟(毫秒),用于控制分包发送的速率 /// 建议值:1-10ms,默认1ms /// [Range(0, 100, ErrorMessage = "分包延迟必须在 0-100 毫秒之间")] public int? ChunkDelayMs { get; set; } = 1; }