namespace SHH.MjpegPlayer { /// /// 会话信息 /// public class SessionInfo { #region Key /// 流标识 public string? Key => $"{DeviceId}#{TypeCode}"; #endregion #region DeviceId /// 设备类型 public string? DeviceId { get; set; } #endregion #region TypeCode /// 类型编码 public string? TypeCode { get; set; } #endregion #region ClientIp /// 客户端 IP public string? ClientIp { get; set; } #endregion #region ClientPort /// 客户端端口 public int ClientPort { get; set; } #endregion #region Message /// 消息 public string? Message { get; set; } #endregion #region AcceptTime /// 接入时间 public DateTime AcceptTime { get; set; } #endregion #region Counter /// 计数器 public SumByTime? Counter { get; init; } #endregion // ======================================================= // [新增] 专门给诊断大屏用的属性,前端可直接读取数值 // ======================================================= /// 接收帧率 (源头健康度) public int RecvFps { get { if (Counter == null || Counter.TotalSecond == null) return 0; // 从字典中安全获取 "接收帧数" if (Counter.TotalSecond.TryGetValue("接收帧数", out uint val)) { return (int)val; } return 0; } } /// 播放/发送帧率 (客户端健康度) public int PlayFps { get { if (Counter == null || Counter.TotalSecond == null) return 0; // 从字典中安全获取 "播放帧数" if (Counter.TotalSecond.TryGetValue("播放帧数", out uint val)) { return (int)val; } return 0; } } } }