diff --git a/LTEMvcApp/Controllers/MessageController.cs b/LTEMvcApp/Controllers/MessageController.cs
index 7243724..8660a31 100644
--- a/LTEMvcApp/Controllers/MessageController.cs
+++ b/LTEMvcApp/Controllers/MessageController.cs
@@ -34,8 +34,8 @@ namespace LTEMvcApp.Controllers
///
/// SSE推送客户端消息流
///
- [HttpGet("{clientName}/stream")]
- public async Task StreamClientMessages(string clientName)
+ [HttpGet("{address}/stream")]
+ public async Task StreamClientMessages(string address)
{
try
{
@@ -44,16 +44,16 @@ namespace LTEMvcApp.Controllers
Response.Headers.Append("Connection", "keep-alive");
Response.Headers.Append("Access-Control-Allow-Origin", "*");
- var client = _webSocketManager.GetClientInstance(clientName);
+ var client = _webSocketManager.GetClientInstance(address);
if (client == null)
{
- await SendSseEvent("error", new { message = "客户端未连接或不存在", clientName });
+ await SendSseEvent("error", new { message = "客户端未连接或不存在", address });
return;
}
await SendSseEvent("open", new {
message = "成功连接到服务器事件流",
- clientName,
+ address,
timestamp = DateTime.UtcNow
});
await Response.Body.FlushAsync(HttpContext.RequestAborted);
@@ -62,8 +62,8 @@ namespace LTEMvcApp.Controllers
int lastReceivedCount = 0;
var cancellationToken = HttpContext.RequestAborted;
- var sentLogFilePath = Path.Combine(_logsDirectory, $"{clientName}_sent_messages.log");
- var receivedLogFilePath = Path.Combine(_logsDirectory, $"{clientName}_received_messages.log");
+ var sentLogFilePath = Path.Combine(_logsDirectory, $"{address}_sent_messages.log");
+ var receivedLogFilePath = Path.Combine(_logsDirectory, $"{address}_received_messages.log");
while (!cancellationToken.IsCancellationRequested)
{
@@ -79,7 +79,7 @@ namespace LTEMvcApp.Controllers
var newMessages = sentMessages.Skip(lastSentCount).ToList();
if (newMessages.Any())
{
- await LogMessagesToFile(sentLogFilePath, newMessages, "SENT", clientName);
+ await LogMessagesToFile(sentLogFilePath, newMessages, "SENT", address);
await SendSseEvent("update", new {
type = "sent",
messages = newMessages,
@@ -100,7 +100,7 @@ namespace LTEMvcApp.Controllers
var newMessages = receivedMessages.Skip(lastReceivedCount).ToList();
if (newMessages.Any())
{
- await LogMessagesToFile(receivedLogFilePath, newMessages, "RECEIVED", clientName);
+ await LogMessagesToFile(receivedLogFilePath, newMessages, "RECEIVED", address);
await SendSseEvent("update", new {
type = "received",
messages = newMessages,
@@ -124,11 +124,11 @@ namespace LTEMvcApp.Controllers
}
catch (Exception ex)
{
- _logger.LogError(ex, "StreamClientMessages 循环中发生错误,客户端: {ClientName}", clientName);
+ _logger.LogError(ex, "StreamClientMessages 循环中发生错误,客户端: {ClientName}", address);
await SendSseEvent("error", new {
message = "处理消息流时发生错误",
error = ex.Message,
- clientName,
+ address,
timestamp = DateTime.UtcNow
});
await Response.Body.FlushAsync(cancellationToken);
@@ -137,24 +137,24 @@ namespace LTEMvcApp.Controllers
}
await SendSseEvent("disconnected", new {
message = "客户端消息流连接已断开",
- clientName,
+ address,
timestamp = DateTime.UtcNow
});
await Response.Body.FlushAsync(cancellationToken);
}
catch (OperationCanceledException)
{
- _logger.LogInformation("StreamClientMessages 连接被客户端取消,客户端: {ClientName}", clientName);
+ _logger.LogInformation("StreamClientMessages 连接被客户端取消,客户端: {ClientName}", address);
}
catch (Exception ex)
{
- _logger.LogError(ex, "StreamClientMessages 方法执行时发生未处理的异常,客户端: {ClientName}", clientName);
+ _logger.LogError(ex, "StreamClientMessages 方法执行时发生未处理的异常,客户端: {ClientName}", address);
try
{
await SendSseEvent("fatal_error", new {
message = "服务器内部错误",
error = ex.Message,
- clientName,
+ address,
timestamp = DateTime.UtcNow
});
await Response.Body.FlushAsync();
@@ -166,14 +166,14 @@ namespace LTEMvcApp.Controllers
///
/// 发送消息到客户端
///
- [HttpPost("{clientName}/send")]
- public ActionResult SendMessage(string clientName, [FromBody] JObject message)
+ [HttpPost("{address}/send")]
+ public ActionResult SendMessage(string address, [FromBody] JObject message)
{
- var messageId = _webSocketManager.SendMessageToClient(clientName, message);
+ var messageId = _webSocketManager.SendMessageToClient(address, message);
if (messageId >= 0)
- return Ok(new { messageId, message = $"消息已发送到客户端 '{clientName}'" });
+ return Ok(new { messageId, message = $"消息已发送到客户端 '{address}'" });
else
- return BadRequest($"发送消息到客户端 '{clientName}' 失败");
+ return BadRequest($"发送消息到客户端 '{address}' 失败");
}
///
@@ -195,7 +195,7 @@ namespace LTEMvcApp.Controllers
filePath = filePath,
size = new FileInfo(filePath).Length,
lastModified = System.IO.File.GetLastWriteTime(filePath),
- clientName = Path.GetFileNameWithoutExtension(filePath).Replace("_sent_messages", "").Replace("_received_messages", ""),
+ address = Path.GetFileNameWithoutExtension(filePath).Replace("_sent_messages", "").Replace("_received_messages", ""),
type = filePath.Contains("_sent_messages") ? "发送消息" : "接收消息"
})
.OrderByDescending(f => f.lastModified)
@@ -329,7 +329,7 @@ namespace LTEMvcApp.Controllers
}
}
- private async Task LogMessagesToFile(string logFilePath, List messages, string messageType, string clientName)
+ private async Task LogMessagesToFile(string logFilePath, List messages, string messageType, string address)
{
try
{
@@ -337,7 +337,7 @@ namespace LTEMvcApp.Controllers
var timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
foreach (var message in messages)
{
- logBuilder.AppendLine($"[{timestamp}] [{clientName}] [{messageType}] {message}");
+ logBuilder.AppendLine($"[{timestamp}] [{address}] [{messageType}] {message}");
logBuilder.AppendLine(new string('-', 80));
}
await System.IO.File.AppendAllTextAsync(logFilePath, logBuilder.ToString(), Encoding.UTF8);
diff --git a/LTEMvcApp/Views/Home/ClientMessages.cshtml b/LTEMvcApp/Views/Home/ClientMessages.cshtml
index cb40f0e..f10d68b 100644
--- a/LTEMvcApp/Views/Home/ClientMessages.cshtml
+++ b/LTEMvcApp/Views/Home/ClientMessages.cshtml
@@ -1,6 +1,6 @@
@{
ViewData["Title"] = "客户端消息队列";
- var clientName = ViewBag.ClientName as string ?? "TestClient";
+ var address = ViewBag.Address as string ?? "TestClient";
}