Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

ConnectionHub.cs 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Microsoft.AspNetCore.SignalR;
  2. namespace Diligent.WebAPI.Host.Hubs
  3. {
  4. public class ConnectionHub : Hub
  5. {
  6. private static Dictionary<string, string> IDs { get; set; } = new();
  7. public override async Task OnDisconnectedAsync(Exception exception)
  8. {
  9. var msg = new StatusMessage { Id = IDs[Context.ConnectionId], M = "unsubscription" };
  10. IDs.Remove(Context.ConnectionId);
  11. await Clients.All.SendAsync("Notify", msg);
  12. }
  13. [HubMethodName("Subscribe")]
  14. public async Task Subscribe(string id)
  15. {
  16. if (!IDs.Any(n => n.Value == id))
  17. IDs[Context.ConnectionId] = id;
  18. string[] ids = new string[IDs.Count];
  19. IDs.Values.CopyTo(ids, 0);
  20. await Clients.Caller.SendAsync("ReceiveList", ids);
  21. var msg = new StatusMessage { Id = id, M = "subscription" };
  22. await Clients.Others.SendAsync("Notify", msg);
  23. }
  24. [HubMethodName("Unsubscribe")]
  25. public async Task Unsubscribe(SenderObj s)
  26. {
  27. IDs.Remove(s.ConnId);
  28. var msg = new StatusMessage { Id = s.Id, M = "unsubscription" };
  29. //breakpoint here !
  30. await Clients.Others.SendAsync("Notify", msg);
  31. }
  32. //public override async Task OnDisconnectedAsync(Exception exception, string id)
  33. //{
  34. // IDs.Remove(id);
  35. // var msg = new StatusMessage { Id = id, M = "unsubscription" };
  36. // await Clients.Others.SendAsync("Notify", msg);
  37. // await base();
  38. //}
  39. }
  40. }