8 changed files with 770 additions and 5 deletions
@ -0,0 +1,61 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace LTEMvcApp.Models |
|||
{ |
|||
/// <summary>
|
|||
/// 统计配置模型
|
|||
/// </summary>
|
|||
public class StatisticsConfig |
|||
{ |
|||
/// <summary>
|
|||
/// 客户端IP地址
|
|||
/// </summary>
|
|||
public string IpAddress { get; set; } = string.Empty; |
|||
|
|||
/// <summary>
|
|||
/// 客户端名称
|
|||
/// </summary>
|
|||
public string ClientName { get; set; } = string.Empty; |
|||
|
|||
/// <summary>
|
|||
/// 是否启用samples参数
|
|||
/// </summary>
|
|||
public bool EnableSamples { get; set; } = false; |
|||
|
|||
/// <summary>
|
|||
/// 是否启用rf参数
|
|||
/// </summary>
|
|||
public bool EnableRf { get; set; } = false; |
|||
|
|||
/// <summary>
|
|||
/// 是否启用此配置
|
|||
/// </summary>
|
|||
public bool IsEnabled { get; set; } = true; |
|||
|
|||
/// <summary>
|
|||
/// 描述信息
|
|||
/// </summary>
|
|||
public string Description { get; set; } = string.Empty; |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 全局统计配置
|
|||
/// </summary>
|
|||
public class GlobalStatisticsConfig |
|||
{ |
|||
/// <summary>
|
|||
/// 默认samples值
|
|||
/// </summary>
|
|||
public bool DefaultSamples { get; set; } = false; |
|||
|
|||
/// <summary>
|
|||
/// 默认rf值
|
|||
/// </summary>
|
|||
public bool DefaultRf { get; set; } = false; |
|||
|
|||
/// <summary>
|
|||
/// 客户端特定配置
|
|||
/// </summary>
|
|||
public List<StatisticsConfig> ClientConfigs { get; set; } = new List<StatisticsConfig>(); |
|||
} |
|||
} |
@ -0,0 +1,173 @@ |
|||
# 统计配置功能实现说明 |
|||
|
|||
## 概述 |
|||
|
|||
本功能实现了通过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` - 添加配置管理API |
|||
- `Views/Home/StatisticsTest.cshtml` - 添加配置管理界面 |
|||
|
|||
## 核心实现 |
|||
|
|||
### 1. 统计配置模型 |
|||
|
|||
```csharp |
|||
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`类中添加了统计配置字段和方法: |
|||
|
|||
```csharp |
|||
// 统计配置相关字段 |
|||
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`中添加了配置管理功能: |
|||
|
|||
```csharp |
|||
// 加载和保存配置 |
|||
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: |
|||
|
|||
```csharp |
|||
[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) |
|||
|
|||
## 配置文件格式 |
|||
|
|||
```json |
|||
{ |
|||
"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. 配置修改会实时保存到文件,重启应用后配置仍然有效 |
|||
|
|||
## 扩展功能 |
|||
|
|||
可以根据需要扩展以下功能: |
|||
- 配置模板管理 |
|||
- 配置导入/导出 |
|||
- 配置版本控制 |
|||
- 配置变更日志 |
|||
- 批量配置操作 |
@ -0,0 +1,22 @@ |
|||
{ |
|||
"defaultSamples": false, |
|||
"defaultRf": false, |
|||
"clientConfigs": [ |
|||
{ |
|||
"ipAddress": "192.168.13.12", |
|||
"clientName": "TestClient1", |
|||
"enableSamples": true, |
|||
"enableRf": false, |
|||
"isEnabled": true, |
|||
"description": "测试客户端1 - 启用samples" |
|||
}, |
|||
{ |
|||
"ipAddress": "192.168.13.13", |
|||
"clientName": "TestClient2", |
|||
"enableSamples": false, |
|||
"enableRf": true, |
|||
"isEnabled": true, |
|||
"description": "测试客户端2 - 启用rf" |
|||
} |
|||
] |
|||
} |
Loading…
Reference in new issue