ClientHubController.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.SignalR;
  4. using OASystem.API.OAMethodLib;
  5. using OASystem.API.OAMethodLib.Hub.HubClients;
  6. using OASystem.API.OAMethodLib.Hub.Hubs;
  7. using OASystem.API.OAMethodLib.SignalR.Hubs;
  8. namespace OASystem.API.Controllers
  9. {
  10. /// <summary>
  11. /// 消息客户端
  12. /// </summary>
  13. [Route("api/[controller]/[action]")]
  14. public class ClientHubController : ControllerBase
  15. {
  16. private readonly ILogger<ClientHubController> _logger;
  17. private readonly IHubContext<ChatHub, IChatClient> _hubContext;
  18. public ClientHubController(ILogger<ClientHubController> logger, IHubContext<ChatHub, IChatClient> hubContext )
  19. {
  20. _logger = logger;
  21. _hubContext = hubContext;
  22. }
  23. /// <summary>
  24. /// 获取在线用户
  25. /// </summary>
  26. /// <returns></returns>
  27. [HttpGet("GetOnlineUsers", Name = "GetOnlineUsers")]
  28. public List<UserModel> GetOnlineUsers()
  29. {
  30. return UserStore.OnlineUser;
  31. }
  32. /// <summary>
  33. /// 发送消息给客户端
  34. /// </summary>
  35. /// <param name="userid"></param>
  36. /// <param name="date"></param>
  37. /// <param name="hubContext"></param>
  38. /// <returns></returns>
  39. [HttpPost("SendAllUserMessage", Name = "SendAllUserMessage")]
  40. public async Task<IActionResult> SendAllUserMessage( string msg)
  41. {
  42. await _hubContext.Clients.All.ReceiveMessage(msg);
  43. return Ok("Send Successful!");
  44. }
  45. /// <summary>
  46. /// 发送指定的消息给指定的客户端
  47. /// </summary>
  48. /// <param name="userid"></param>
  49. /// <param name="date"></param>
  50. /// <param name="hubContext"></param>
  51. /// <returns></returns>
  52. [HttpPost("SendCustomUserMessage", Name = "SendCustomUserMessage")]
  53. public async Task<IActionResult> SendCustomUserMessage(List<int> userIds,string title,string content )
  54. {
  55. string connId = string.Empty;
  56. //UserModel user = UserStore.OnlineUser.Where(it => it.UserId == userId).FirstOrDefault();
  57. //if (user != null)
  58. //{
  59. // connId = user.ConnectionId;
  60. //}
  61. //else
  62. //{
  63. // return Ok("Send Failed! User Not Online!");
  64. //}
  65. //await _hubContext.Clients.Client(connId).ReceiveMessage(date);
  66. GeneralMethod.MessageIssueAndNotification(MessageTypeEnum.Announcement,title, content, userIds);
  67. return Ok("Send Successful!");
  68. }
  69. /// <summary>
  70. /// 消息 发布And 通知
  71. /// </summary>
  72. /// <param name="msgTypeEnum"></param>
  73. /// <param name="title"></param>
  74. /// <param name="content"></param>
  75. /// <param name="userIds"></param>
  76. /// <returns></returns>
  77. [HttpPost("MessageIssuserAndNotification", Name = "MessageIssuserAndNotification")]
  78. public async Task<IActionResult> MessageIssuserAndNotification(MessageTypeEnum msgTypeEnum, string title, string content, List<int> userIds)
  79. {
  80. var status = await GeneralMethod.MessageIssueAndNotification(msgTypeEnum,title, content, userIds);
  81. if (status)
  82. {
  83. return Ok("Operation Successful!");
  84. }
  85. else
  86. {
  87. return Ok("Operation Fail!");
  88. }
  89. }
  90. }
  91. }