| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Http.Features;
- using System.Net;
- namespace EEMSService.Hubs;
- internal partial class ClientsHub(DeviceManager deviceManager, ClientManager clientManager, IEEMSBaseServerProvider provider) : HubBase
- {
- public override Task OnConnectedAsync()
- {
- if (Context.Features.Get<IHttpConnectionFeature>() is IHttpConnectionFeature feature)
- {
- provider?.OnConnected(feature.RemoteIpAddress!.ToString(), (ushort)feature.RemotePort, ServiceHub.ClinetHub);
- }
- return base.OnConnectedAsync();
- }
- public override Task OnDisconnectedAsync(Exception? exception)
- {
- deviceManager.RemoveDevice(Context.ConnectionId, out DeviceInfo? device);
- if (device is not null && device.Guid.HasValue)
- clientManager.DeviceClients.TryRemove(device.Guid.Value, out _);
- if (Context.Features.Get<IHttpConnectionFeature>() is IHttpConnectionFeature feature)
- {
- provider?.OnDisConnected(feature.RemoteIpAddress!.ToString(), (ushort)feature.RemotePort, ServiceHub.ClinetHub);
- }
- return base.OnDisconnectedAsync(exception);
- }
- public Task<Guid> RegisterDevice(DeviceInfo deviceInfo)
- {
- deviceInfo.Guid ??= Guid.NewGuid();
- deviceManager.LoginDevice(Context.ConnectionId, deviceInfo);
- clientManager.DeviceClients[deviceInfo.Guid.Value] = Clients.Caller;
- //Task.Factory.StartNew(() =>
- //{
- // Thread.Sleep(2000);
- // clientManager.DeviceClients[deviceInfo.Guid.Value].SendAsync("RequestFile", Guid.NewGuid(), 1);
- //});
- return Task.FromResult(deviceInfo.Guid.Value);
- }
- }
|