Initial commit
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user