using System.Net.Sockets; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_Tasks.Workflow.Abstractions; namespace WIDESEAWCS_Tasks.SocketServer { /// /// TcpSocketServer 的网关实现 /// /// /// 实现 ISocketClientGateway 接口,将底层 TCP 通信细节封装。 /// 使业务层不直接依赖 TcpSocketServer,便于单元测试和替换实现。 /// public class SocketClientGateway : ISocketClientGateway { /// /// TCP Socket 服务器实例 /// private readonly TcpSocketServer _tcpSocket; /// /// 构造函数 /// /// TCP Socket 服务器实例 public SocketClientGateway(TcpSocketServer tcpSocket) { _tcpSocket = tcpSocket; } /// /// 异步发送消息到指定客户端 /// /// 目标客户端 ID /// 消息内容 /// 发送是否成功 public Task SendToClientAsync(string clientId, string message) { return _tcpSocket.SendToClientAsync(clientId, message); } /// /// 通过 TcpClient 发送消息 /// /// TCP 客户端连接 /// 消息内容 public Task SendMessageAsync(TcpClient client, string message) { return _tcpSocket.SendMessageAsync(client, message); } /// /// 获取所有已连接客户端 ID /// /// 客户端 ID 列表 public IReadOnlyList GetClientIds() { return _tcpSocket.GetClientIds(); } /// /// 处理客户端连接的消息循环 /// /// TCP 客户端连接 /// 客户端 ID /// 取消令牌 /// 机器人状态 /// 任务 public Task HandleClientAsync(TcpClient client, string clientId, CancellationToken cancellationToken, RobotSocketState robotCrane) { return _tcpSocket.HandleClientAsync(client, clientId, cancellationToken, robotCrane); } } }