9 changed files with 137 additions and 74 deletions
@ -1,8 +1,8 @@ |
|||||
{ |
{ |
||||
"Logging": { |
"Logging": { |
||||
"LogLevel": { |
"LogLevel": { |
||||
"Default": "Information", |
"Default": "Trace", |
||||
"Microsoft.AspNetCore": "Warning" |
"Microsoft.AspNetCore": "Information" |
||||
} |
} |
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -0,0 +1,45 @@ |
|||||
|
using System.Text.Json; |
||||
|
using CellularManagement.WebSocket.Connection; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
|
||||
|
namespace CellularManagement.WebSocket.Services.Handlers; |
||||
|
|
||||
|
public class ChatMessageHandler : IWebSocketMessageHandler |
||||
|
{ |
||||
|
private readonly ILogger<ChatMessageHandler> _logger; |
||||
|
|
||||
|
public ChatMessageHandler(ILogger<ChatMessageHandler> logger) |
||||
|
{ |
||||
|
_logger = logger; |
||||
|
} |
||||
|
|
||||
|
public string MessageType => "chat"; |
||||
|
|
||||
|
public async Task<WebSocketMessage> HandleAsync(WebSocketMessage message) |
||||
|
{ |
||||
|
_logger.LogInformation("开始处理聊天消息,连接ID:{ConnectionId}", message.ConnectionId); |
||||
|
_logger.LogDebug("原始消息数据:{Data}", System.Text.Encoding.UTF8.GetString(message.Data)); |
||||
|
|
||||
|
await Task.Delay(100); // 模拟异步处理
|
||||
|
|
||||
|
var response = new WebSocketMessage |
||||
|
{ |
||||
|
ConnectionId = message.ConnectionId, |
||||
|
Data = System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(new |
||||
|
{ |
||||
|
type = "chat", |
||||
|
payload = new |
||||
|
{ |
||||
|
message = "收到聊天消息", |
||||
|
originalData = System.Text.Encoding.UTF8.GetString(message.Data), |
||||
|
timestamp = DateTime.UtcNow |
||||
|
} |
||||
|
})), |
||||
|
MessageType = System.Net.WebSockets.WebSocketMessageType.Text |
||||
|
}; |
||||
|
|
||||
|
_logger.LogInformation("聊天消息处理完成,连接ID:{ConnectionId},响应数据大小:{DataSize}字节", |
||||
|
message.ConnectionId, response.Data.Length); |
||||
|
return response; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
using System.Text.Json; |
||||
|
using CellularManagement.WebSocket.Connection; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
|
||||
|
namespace CellularManagement.WebSocket.Services.Handlers; |
||||
|
|
||||
|
public class NotificationMessageHandler : IWebSocketMessageHandler |
||||
|
{ |
||||
|
private readonly ILogger<NotificationMessageHandler> _logger; |
||||
|
|
||||
|
public NotificationMessageHandler(ILogger<NotificationMessageHandler> logger) |
||||
|
{ |
||||
|
_logger = logger; |
||||
|
} |
||||
|
|
||||
|
public string MessageType => "notification"; |
||||
|
|
||||
|
public async Task<WebSocketMessage> HandleAsync(WebSocketMessage message) |
||||
|
{ |
||||
|
_logger.LogInformation("开始处理通知消息,连接ID:{ConnectionId}", message.ConnectionId); |
||||
|
_logger.LogDebug("原始消息数据:{Data}", System.Text.Encoding.UTF8.GetString(message.Data)); |
||||
|
|
||||
|
await Task.Delay(100); // 模拟异步处理
|
||||
|
|
||||
|
var response = new WebSocketMessage |
||||
|
{ |
||||
|
ConnectionId = message.ConnectionId, |
||||
|
Data = System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(new |
||||
|
{ |
||||
|
type = "notification", |
||||
|
payload = new |
||||
|
{ |
||||
|
message = "收到通知消息", |
||||
|
originalData = System.Text.Encoding.UTF8.GetString(message.Data), |
||||
|
timestamp = DateTime.UtcNow |
||||
|
} |
||||
|
})), |
||||
|
MessageType = System.Net.WebSockets.WebSocketMessageType.Text |
||||
|
}; |
||||
|
|
||||
|
_logger.LogInformation("通知消息处理完成,连接ID:{ConnectionId},响应数据大小:{DataSize}字节", |
||||
|
message.ConnectionId, response.Data.Length); |
||||
|
return response; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,21 @@ |
|||||
|
using CellularManagement.WebSocket.Connection; |
||||
|
|
||||
|
namespace CellularManagement.WebSocket.Services; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// WebSocket 消息处理器接口
|
||||
|
/// </summary>
|
||||
|
public interface IWebSocketMessageHandler |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 获取处理器支持的消息类型
|
||||
|
/// </summary>
|
||||
|
string MessageType { get; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 处理消息
|
||||
|
/// </summary>
|
||||
|
/// <param name="message">WebSocket 消息</param>
|
||||
|
/// <returns>处理后的消息</returns>
|
||||
|
Task<WebSocketMessage> HandleAsync(WebSocketMessage message); |
||||
|
} |
||||
Loading…
Reference in new issue