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