Initial commit

This commit is contained in:
2026-07-03 16:31:37 +07:00
commit 899c7c637d
1939 changed files with 641750 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
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);
}
}