7 changed files with 163 additions and 6 deletions
@ -0,0 +1,48 @@ |
|||||
|
using CellularManagement.WebSocket.Models; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Text.Json; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace CellularManagement.WebSocket.Handlers |
||||
|
{ |
||||
|
public class HeartbeatHandlerManager : IWebSocketMessageHandler |
||||
|
{ |
||||
|
private readonly ILogger<ChatMessageHandler> _logger; |
||||
|
|
||||
|
public HeartbeatHandlerManager(ILogger<ChatMessageHandler> logger) |
||||
|
{ |
||||
|
_logger = logger; |
||||
|
} |
||||
|
|
||||
|
public string MessageType => "heartbeat"; |
||||
|
|
||||
|
public async Task<WebSocketMessage> HandleAsync(WebSocketMessage message) |
||||
|
{ |
||||
|
_logger.LogDebug("收到ping心跳,连接ID:{ConnectionId}", message.ConnectionId); |
||||
|
|
||||
|
await Task.Delay(100); // 模拟异步处理
|
||||
|
|
||||
|
var response = new WebSocketMessage |
||||
|
{ |
||||
|
ConnectionId = message.ConnectionId, |
||||
|
Data = System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(new |
||||
|
{ |
||||
|
type = "heartbeat", |
||||
|
payload = new |
||||
|
{ |
||||
|
message = "pong", |
||||
|
timestamp = DateTime.UtcNow |
||||
|
} |
||||
|
})), |
||||
|
MessageType = System.Net.WebSockets.WebSocketMessageType.Text |
||||
|
}; |
||||
|
|
||||
|
_logger.LogDebug("发送pong响应,连接ID:{ConnectionId}", message.ConnectionId); |
||||
|
return response; |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue