diff --git a/LTEMvcApp/Controllers/WebSocketController.cs b/LTEMvcApp/Controllers/WebSocketController.cs index c3850f5..5f24034 100644 --- a/LTEMvcApp/Controllers/WebSocketController.cs +++ b/LTEMvcApp/Controllers/WebSocketController.cs @@ -247,23 +247,38 @@ namespace LTEMvcApp.Controllers /// 获取客户端消息队列 /// /// 客户端名称 + /// 发送消息起始索引 + /// 接收消息起始索引 /// 发送和接收的消息队列 [HttpGet("clients/{clientName}/messages")] - public ActionResult GetClientMessages(string clientName) + public ActionResult GetClientMessages(string clientName, [FromQuery] int sentStartIndex = 0, [FromQuery] int receivedStartIndex = 0) { var client = _webSocketManager.GetClientInstance(clientName); if (client == null) - return NotFound($"客户端 '{clientName}' 不存在或未连接"); - - var result = new { - SentMessages = client.SentMessages.ToList(), - ReceivedMessages = client.ReceivedMessages.ToList(), - SentCount = client.SentMessages.Count(), - ReceivedCount = client.ReceivedMessages.Count() - }; + // 即使客户端未连接,也可能是在配置页面中查看,所以返回空而不是404 + return Ok(new + { + SentMessages = new List(), + ReceivedMessages = new List(), + SentCount = 0, + ReceivedCount = 0 + }); + } - return Ok(result); + var sentMessages = client.SentMessages.ToList(); + var receivedMessages = client.ReceivedMessages.ToList(); + + var newSent = sentMessages.Skip(sentStartIndex).ToList(); + var newReceived = receivedMessages.Skip(receivedStartIndex).ToList(); + + return Ok(new + { + NewSentMessages = newSent, + NewReceivedMessages = newReceived, + TotalSentCount = sentMessages.Count, + TotalReceivedCount = receivedMessages.Count + }); } /// diff --git a/LTEMvcApp/Views/Home/ClientMessages.cshtml b/LTEMvcApp/Views/Home/ClientMessages.cshtml index 878e35b..6cbbcfb 100644 --- a/LTEMvcApp/Views/Home/ClientMessages.cshtml +++ b/LTEMvcApp/Views/Home/ClientMessages.cshtml @@ -63,94 +63,127 @@ @section Scripts { @@ -177,5 +222,4 @@ - } \ No newline at end of file