using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
namespace WIDESEAWCS_Tasks.SocketServer
{
///
/// Socket 服务器后台主机服务
///
///
/// 实现 IHostedService 接口,作为 ASP.NET Core 的后台服务运行。
/// 负责在应用启动时启动 Socket 服务器,停止时关闭服务器。
///
public class SocketServerHostedService : IHostedService
{
///
/// TCP Socket 服务器实例
///
private readonly TcpSocketServer _server;
///
/// Socket 服务器配置选项
///
private readonly SocketServerOptions _options;
///
/// 构造函数
///
/// TCP Socket 服务器实例
/// 配置选项
public SocketServerHostedService(TcpSocketServer server, IOptions options)
{
_server = server;
_options = options.Value;
}
///
/// 启动 Socket 服务器
///
///
/// 如果配置中服务器被禁用(Enabled=false),则不启动。
///
/// 取消令牌
/// 启动任务
public Task StartAsync(CancellationToken cancellationToken)
{
// 检查服务器是否启用
if (!_options.Enabled)
{
return Task.CompletedTask;
}
// 启动服务器
return _server.StartAsync(cancellationToken);
}
///
/// 停止 Socket 服务器
///
/// 取消令牌
/// 停止任务
public Task StopAsync(CancellationToken cancellationToken)
{
return _server.StopAsync(cancellationToken);
}
}
}