新增 Mjpegplayer 用来播放 Web 流
This commit is contained in:
62
SHH.MjpegPlayer/GrpcServerManager.cs
Normal file
62
SHH.MjpegPlayer/GrpcServerManager.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using Grpc.Core;
|
||||
using SHH.Contracts.Grpc;
|
||||
|
||||
namespace SHH.MjpegPlayer
|
||||
{
|
||||
/// <summary>
|
||||
/// gRpc 服务宿主管理器
|
||||
/// 职责:初始化业务处理器、配置并启动 gRpc 监听服务。
|
||||
/// </summary>
|
||||
public static class GrpcServerManager
|
||||
{
|
||||
private static Server? _server;
|
||||
|
||||
/// <summary>
|
||||
/// 启动 gRpc 服务并初始化业务 Handler
|
||||
/// </summary>
|
||||
public static void Start()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 1. 显式初始化业务处理器 (确保单例构造函数执行,完成事件订阅)
|
||||
// 必须在服务启动前完成,否则可能丢失首批注册事件
|
||||
_ = DeviceConfigHandler.Instance;
|
||||
_ = DeviceStatusHandler.Instance;
|
||||
Console.WriteLine("[System] 业务处理器 (Config/Status) 已初始化。");
|
||||
|
||||
// 2. 配置 gRpc 服务器
|
||||
_server = new Server
|
||||
{
|
||||
// 绑定重构后的 GatewayService
|
||||
Services = { GatewayProvider.BindService(new GatewayService()) },
|
||||
// 监听 9002 端口
|
||||
Ports = { new ServerPort("[::]", 9002, ServerCredentials.Insecure) }
|
||||
};
|
||||
|
||||
// 3. 开启服务
|
||||
_server.Start();
|
||||
|
||||
Console.WriteLine("======================================");
|
||||
Console.WriteLine("gRpc 服务端启动成功!端口: 9002");
|
||||
Console.WriteLine("======================================");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[Critical] gRpc 启动失败: {ex.Message}");
|
||||
// 此处建议记录到本地错误日志文件
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止服务并释放资源
|
||||
/// </summary>
|
||||
public static void Stop()
|
||||
{
|
||||
if (_server != null)
|
||||
{
|
||||
_server.ShutdownAsync().Wait();
|
||||
Console.WriteLine("[System] gRpc 服务已停止。");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user