You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.7 KiB
64 lines
2.7 KiB
2 weeks ago
|
# Constructor.cs (自动转换为Markdown)
|
||
|
|
||
|
```csharp
|
||
|
// 以下内容为原始C#代码,含详细注释
|
||
|
// 文件原路径:Managers/WebSocketMgr/Constructor.cs
|
||
|
using Microsoft.Extensions.Logging;
|
||
|
using Newtonsoft.Json.Linq;
|
||
|
using Newtonsoft.Json;
|
||
|
using System;
|
||
|
using System.Collections.Concurrent;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Text;
|
||
|
using System.Threading.Tasks;
|
||
|
using WebSocket4Net;
|
||
|
|
||
|
namespace CoreAgent.ProtocolClient.Managers.WebSocketMgr
|
||
|
{
|
||
|
public partial class WebSocketMessageManager
|
||
|
{
|
||
|
#region 构造函数
|
||
|
|
||
|
/// <summary>
|
||
|
/// 构造函数 - 对应LTEClientWebSocket构造函数中的WebSocket相关初始化
|
||
|
///
|
||
|
/// 初始化说明:
|
||
|
/// 1. 创建MessageIdManager替代原始的_messageId和_logGetId字段
|
||
|
/// 2. 创建消息队列_messageFifo,保持与原始实现一致
|
||
|
/// 3. 不初始化WebSocket实例,在Connect方法中创建
|
||
|
/// 4. 移除_sentMessages和_receivedMessages的初始化
|
||
|
///
|
||
|
/// 对应关系:
|
||
|
/// - 参数clientName:对应LTEClientWebSocket构造函数中的config.Name
|
||
|
/// - 参数logger:对应LTEClientWebSocket构造函数中的logger参数
|
||
|
/// - _messageIdManager:替代原始的_messageId和_logGetId字段
|
||
|
/// - _messageFifo:对应原始的_messageFifo初始化
|
||
|
/// - _disposed:对应原始的_disposed初始化
|
||
|
/// - 日志记录:对应原始的构造函数日志记录
|
||
|
///
|
||
|
/// 重构改进:
|
||
|
/// - 参数验证:增加了对clientName和logger的null检查
|
||
|
/// - 职责分离:专注于WebSocket相关初始化
|
||
|
/// - 功能增强:通过MessageIdManager提供更好的消息ID管理
|
||
|
/// - 移除冗余:移除了消息缓存相关的初始化
|
||
|
/// </summary>
|
||
|
/// <param name="clientName">客户端名称,对应LTEClientWebSocket._config.Name</param>
|
||
|
/// <param name="logger">日志记录器,对应LTEClientWebSocket._logger</param>
|
||
|
public WebSocketMessageManager(string clientName, ILogger logger)
|
||
|
{
|
||
|
_clientName = clientName ?? throw new ArgumentNullException(nameof(clientName));
|
||
|
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||
|
|
||
|
// 创建MessageIdManager,替代原始的_messageId和_logGetId字段
|
||
|
_messageIdManager = new MessageIdManager(clientName, logger);
|
||
|
|
||
|
// 创建消息队列,使用BlockingCollection优化线程安全性和性能
|
||
|
_messageFifo = new BlockingCollection<JObject>();
|
||
|
|
||
|
_logger.LogInformation($"[{_clientName}] 创建WebSocket消息管理器");
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
}
|
||
|
}
|