Files
BQP/srcs/RobotNet10/RobotApp/RobotNet10.RobotApp/Hubs/DeviceHubContext.cs
2026-07-13 09:25:40 +07:00

42 lines
1.4 KiB
C#

using Microsoft.AspNetCore.SignalR;
using RobotNet10.RobotApp.Client.Shared.Devices;
using RobotNet10.RobotApp.Devices;
namespace RobotNet10.RobotApp.Hubs;
/// <summary>
/// HubContext để broadcast device updates từ DeviceProvider
/// </summary>
public class DeviceHubContext(IHubContext<DeviceHub> hubContext)
{
/// <summary>
/// Broadcast device update đến tất cả clients
/// </summary>
public async Task BroadcastDeviceUpdate(DeviceBase device)
{
var update = new DeviceUpdateDto
{
DeviceId = device.DeviceId,
Status = device.Status,
Properties = device.Properties.ToDictionary(kvp => kvp.Key, kvp => kvp.Value),
LastError = device.LastError?.Message,
LastUpdateTime = device.LastUpdateStateTime,
LastConnectedTime = device.LastConnectedTime,
LastDisconnectedTime = device.LastDisconnectedTime,
ReconnectAttemptCount = device.ReconnectAttemptCount
};
await hubContext.Clients.All.SendAsync("DeviceUpdated", update);
}
/// <summary>
/// Broadcast device status change
/// </summary>
public async Task BroadcastDeviceStatusChanged(string deviceId, DeviceStatus status)
{
await hubContext.Clients.All.SendAsync("DeviceStatusChanged", deviceId, status);
}
}