MacStatusHub.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using Cksoft.Unity;
  2. using Cksoft.Unity.Log4NetConfig;
  3. using DllEapBll.Services;
  4. using DllEapCommon.Filters;
  5. using DllEapEntity.OFILM;
  6. using Microsoft.AspNetCore.Authorization;
  7. using Microsoft.AspNetCore.SignalR;
  8. using Microsoft.Extensions.Configuration;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Configuration.Internal;
  12. using System.Linq;
  13. using System.Threading;
  14. using System.Threading.Tasks;
  15. namespace DllEapBll.SignalR
  16. {
  17. public class MacStatusHub : Hub
  18. {
  19. private readonly MacStatusService macStatusService;
  20. private readonly IConfiguration configuration;
  21. private readonly int seconds = 60;
  22. public MacStatusHub(MacStatusService macStatusService,
  23. IConfiguration configuration)
  24. {
  25. this.configuration = configuration;
  26. this.macStatusService = macStatusService;
  27. }
  28. [AllowAnonymous]
  29. [ExceptionFilter]
  30. public async Task GetLastStatus(string filter, string recipe, string date, string type)
  31. {
  32. EapResponse response = null;
  33. var connectionId = Context.ConnectionId;
  34. try
  35. {
  36. while (true)
  37. {
  38. //if ()
  39. //{
  40. // break;
  41. //}
  42. response = macStatusService.GetTotalInfo(filter, recipe, date, type);
  43. await Clients.Client(connectionId).SendAsync("ReceiveUpdate", response);
  44. Thread.Sleep(1000 * seconds);
  45. }
  46. }
  47. catch (Exception e)
  48. {
  49. await Clients.Client(connectionId).SendAsync("Error", e.Message);
  50. }
  51. finally
  52. {
  53. await Clients.Client(connectionId).SendAsync("Finished");
  54. Context.Abort();
  55. Dispose();
  56. }
  57. }
  58. [ExceptionFilter]
  59. public override async Task OnConnectedAsync()
  60. {
  61. var connectionId = Context.ConnectionId;
  62. var context = Context.GetHttpContext();
  63. var filter = Context.GetHttpContext().Request.Query["filter"].FirstOrDefault();
  64. var recipe = context.Request.Query["recipe"].FirstOrDefault();
  65. var date = context.Request.Query["date"].FirstOrDefault();
  66. var type = context.Request.Query["type"].FirstOrDefault();
  67. await Clients.Client(connectionId).SendAsync("BeginConnection", macStatusService.GetTotalInfo(filter, recipe, date, type));
  68. Thread.Sleep(1000 * seconds);
  69. await GetLastStatus(filter, recipe, date, type);
  70. }
  71. public override async Task OnDisconnectedAsync(Exception exception)
  72. {
  73. LogHelper<MacStatusHub>.LogError(exception?.ToString() ?? "SignalR断开连接", "System", "");
  74. await Task.CompletedTask;
  75. }
  76. }
  77. }