You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

4.9 KiB

统计配置功能实现说明

概述

本功能实现了通过StatisticsController动态控制统计消息中的samplesrf参数,支持根据IP地址为不同客户端设置不同的统计配置。

功能特性

1. 全局统计配置

  • 设置默认的samplesrf
  • 所有未配置特定参数的客户端将使用全局默认值

2. 客户端特定配置

  • 根据客户端名称或IP地址设置特定的统计参数
  • 支持启用/禁用配置
  • 可添加描述信息

3. 动态配置管理

  • 通过Web界面实时修改配置
  • 配置自动保存到statistics_config.json文件
  • 支持配置列表查看和编辑

文件结构

新增文件

  • Models/StatisticsConfig.cs - 统计配置模型
  • statistics_config.json - 统计配置文件

修改文件

  • Services/LTEClientWebSocket.cs - 添加统计配置支持
  • Services/WebSocketManagerService.cs - 添加配置管理功能
  • Controllers/StatisticsController.cs - 添加配置管理API
  • Views/Home/StatisticsTest.cshtml - 添加配置管理界面

核心实现

1. 统计配置模型

public class StatisticsConfig
{
    public string IpAddress { get; set; } = string.Empty;
    public string ClientName { get; set; } = string.Empty;
    public bool EnableSamples { get; set; } = false;
    public bool EnableRf { get; set; } = false;
    public bool IsEnabled { get; set; } = true;
    public string Description { get; set; } = string.Empty;
}

public class GlobalStatisticsConfig
{
    public bool DefaultSamples { get; set; } = false;
    public bool DefaultRf { get; set; } = false;
    public List<StatisticsConfig> ClientConfigs { get; set; } = new List<StatisticsConfig>();
}

2. WebSocket客户端配置

LTEClientWebSocket类中添加了统计配置字段和方法:

// 统计配置相关字段
private bool _enableSamples = false;
private bool _enableRf = false;

// 设置统计配置
public void SetStatisticsConfig(bool enableSamples, bool enableRf)
{
    _enableSamples = enableSamples;
    _enableRf = enableRf;
}

// 在UpdateStats方法中使用配置
var msg = new JObject { 
    ["message"] = "stats", 
    ["samples"] = _enableSamples, 
    ["rf"] = _enableRf 
};

3. 配置管理服务

WebSocketManagerService中添加了配置管理功能:

// 加载和保存配置
private void LoadStatisticsConfig()
private void SaveStatisticsConfig()

// 配置管理方法
public GlobalStatisticsConfig GetGlobalStatisticsConfig()
public void SetGlobalStatisticsConfig(GlobalStatisticsConfig config)
public StatisticsConfig? GetClientStatisticsConfig(string clientName)
public void SetClientStatisticsConfig(StatisticsConfig config)
public StatisticsConfig? GetStatisticsConfigByIp(string ipAddress)

// 应用配置到客户端
private void UpdateClientStatisticsConfig(string clientName)
private void UpdateAllClientsStatisticsConfig()

4. API接口

StatisticsController中添加了配置管理API:

[HttpGet] GetGlobalStatisticsConfig()
[HttpPost] SetGlobalStatisticsConfig([FromBody] GlobalStatisticsConfig config)
[HttpGet] GetClientStatisticsConfig(string clientName)
[HttpPost] SetClientStatisticsConfig([FromBody] StatisticsConfig config)
[HttpGet] GetStatisticsConfigByIp(string ipAddress)
[HttpGet] GetAllClientStatisticsConfigs()

使用方法

1. 访问配置界面

访问 /Home/StatisticsTest 页面,可以看到统计配置管理界面。

2. 设置全局配置

  • 在"全局统计配置"区域设置默认的samples和rf值
  • 点击"保存配置"按钮保存

3. 设置客户端特定配置

  • 在"客户端特定配置"区域输入客户端信息
  • 设置特定的samples和rf值
  • 点击"保存配置"按钮保存

4. 查看配置列表

  • 在"配置列表"区域可以看到所有已配置的客户端
  • 点击"编辑"按钮可以修改现有配置

配置优先级

  1. 客户端特定配置 - 如果客户端有特定的配置且启用,则使用该配置
  2. 全局默认配置 - 如果客户端没有特定配置,则使用全局默认值
  3. 系统默认值 - 如果都没有配置,则使用系统默认值(samples=false, rf=false)

配置文件格式

{
  "defaultSamples": false,
  "defaultRf": false,
  "clientConfigs": [
    {
      "ipAddress": "192.168.13.12",
      "clientName": "TestClient1",
      "enableSamples": true,
      "enableRf": false,
      "isEnabled": true,
      "description": "测试客户端1 - 启用samples"
    }
  ]
}

注意事项

  1. 配置修改后会自动应用到所有已连接的客户端
  2. 新连接的客户端会自动应用相应的配置
  3. 配置文件会在应用启动时自动加载
  4. 配置修改会实时保存到文件,重启应用后配置仍然有效

扩展功能

可以根据需要扩展以下功能:

  • 配置模板管理
  • 配置导入/导出
  • 配置版本控制
  • 配置变更日志
  • 批量配置操作