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
4.9 KiB
统计配置功能实现说明
概述
本功能实现了通过StatisticsController动态控制统计消息中的samples
和rf
参数,支持根据IP地址为不同客户端设置不同的统计配置。
功能特性
1. 全局统计配置
- 设置默认的
samples
和rf
值 - 所有未配置特定参数的客户端将使用全局默认值
2. 客户端特定配置
- 根据客户端名称或IP地址设置特定的统计参数
- 支持启用/禁用配置
- 可添加描述信息
3. 动态配置管理
- 通过Web界面实时修改配置
- 配置自动保存到
statistics_config.json
文件 - 支持配置列表查看和编辑
文件结构
新增文件
Models/StatisticsConfig.cs
- 统计配置模型statistics_config.json
- 统计配置文件
修改文件
Services/LTEClientWebSocket.cs
- 添加统计配置支持Services/WebSocketManagerService.cs
- 添加配置管理功能Controllers/StatisticsController.cs
- 添加配置管理APIViews/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. 查看配置列表
- 在"配置列表"区域可以看到所有已配置的客户端
- 点击"编辑"按钮可以修改现有配置
配置优先级
- 客户端特定配置 - 如果客户端有特定的配置且启用,则使用该配置
- 全局默认配置 - 如果客户端没有特定配置,则使用全局默认值
- 系统默认值 - 如果都没有配置,则使用系统默认值(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"
}
]
}
注意事项
- 配置修改后会自动应用到所有已连接的客户端
- 新连接的客户端会自动应用相应的配置
- 配置文件会在应用启动时自动加载
- 配置修改会实时保存到文件,重启应用后配置仍然有效
扩展功能
可以根据需要扩展以下功能:
- 配置模板管理
- 配置导入/导出
- 配置版本控制
- 配置变更日志
- 批量配置操作