using System; namespace SHH.CameraDashboard; /// /// [Dashboard端] Service 启动参数构建器 /// 职责:生成标准化的命令行参数字符串,告诉 Service 如何反向连接 /// public static class ServiceLaunchOptions { /// /// 生成启动参数 /// /// 给子服务起的唯一ID (如 "CamService_01") /// Dashboard 的 IP (通常是 127.0.0.1) /// Dashboard 监听视频的端口 (如 6000) /// 指定子服务 WebAPI 监听的端口 (如 5005) /// 命令行参数字符串 public static string BuildArguments(string serviceId, string dashboardIp, int streamPort, int serviceApiPort) { // 获取当前 Dashboard 进程 ID,传给子进程做“父进程守护” int parentPid = Environment.ProcessId; // 拼接参数: // --pid: 父进程ID // --uris: 反向连接的目标地址 (Dashboard 的地址) // --mode: 1 (Active模式,代表 Service 主动连接 Dashboard) // --ports: Service 自身的 WebAPI 端口 (防止与 Dashboard 冲突) return $"" + $"--pid {parentPid} " + $"--id \"{serviceId}\" " + $"--uris \"{dashboardIp},{streamPort}\" " + $"--mode 1 " + $"--ports \"{serviceApiPort},100\""; // 100 是保留位,暂不用 } }