using System.Diagnostics; using Microsoft.AspNetCore.Mvc; using LTEMvcApp.Models; using LTEMvcApp.Services; namespace LTEMvcApp.Controllers; public class HomeController : Controller { private readonly ILogger _logger; private readonly WebSocketManagerService _webSocketManager; public HomeController(ILogger logger, WebSocketManagerService webSocketManager) { _logger = logger; _webSocketManager = webSocketManager; } public IActionResult Index() { _logger.LogInformation("访问首页"); // 获取连接统计信息 var stats = _webSocketManager.GetConnectionStatistics(); ViewBag.ConnectionStats = stats; // 获取所有客户端配置 var configs = _webSocketManager.GetAllClientConfigs(); ViewBag.ClientConfigs = configs; return View(); } public IActionResult Privacy() { return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } /// /// WebSocket测试页面 /// public IActionResult WebSocketTest() { return View(); } /// /// 添加测试客户端配置 /// [HttpPost] public IActionResult AddTestClient() { _logger.LogInformation("添加测试客户端配置"); var config = new ClientConfig { Name = "测试客户端", Address = "192.168.13.12:9001", Ssl = false, Enabled = true, ReconnectDelay = 5000, Password = "test123", Logs = new Dictionary { ["layers"] = new Dictionary { ["PHY"] = new Dictionary { ["level"] = "debug", ["filter"] = "debug", ["max_size"] = 1000, ["payload"] = false }, ["RRC"] = new Dictionary { ["level"] = "debug", ["filter"] = "debug", ["max_size"] = 1000, ["payload"] = false } }, ["signal"] = true, ["cch"] = true } }; var success = _webSocketManager.AddClientConfig(config); if (success) { TempData["Message"] = "测试客户端配置已添加"; } else { TempData["Error"] = "添加测试客户端配置失败"; } return RedirectToAction(nameof(Index)); } /// /// 启动测试客户端 /// [HttpPost] public IActionResult StartTestClient() { _logger.LogInformation("启动测试客户端"); var success = _webSocketManager.StartClient("测试客户端"); if (success) { TempData["Message"] = "测试客户端已启动"; } else { TempData["Error"] = "启动测试客户端失败"; } return RedirectToAction(nameof(Index)); } /// /// 停止测试客户端 /// [HttpPost] public IActionResult StopTestClient() { _logger.LogInformation("停止测试客户端"); var success = _webSocketManager.StopClient("测试客户端"); if (success) { TempData["Message"] = "测试客户端已停止"; } else { TempData["Error"] = "停止测试客户端失败"; } return RedirectToAction(nameof(Index)); } }