1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using Microsoft.AspNetCore.SignalR;
- namespace OASystem.API.OAMethodLib.Hubs
- {
- /// <summary>
- /// 定义集线器
- /// </summary>
- public class MyHub : Hub
- {
- /// <summary>
- /// 用户字典
- /// </summary>
- private static Dictionary<string, string> dictUsers = new Dictionary<string, string>();
- /// <summary>
- /// 建立连接回调
- /// </summary>
- /// <returns></returns>
- public override Task OnConnectedAsync()
- {
- Console.WriteLine($"ID:{Context.ConnectionId} 已连接");
- return base.OnConnectedAsync();
- }
- /// <summary>
- /// 断开连接回调
- /// </summary>
- /// <param name="exception"></param>
- /// <returns></returns>
- public override Task OnDisconnectedAsync(Exception? exception)
- {
- Console.WriteLine($"ID:{Context.ConnectionId} 已断开");
- return base.OnDisconnectedAsync(exception);
- }
- /// <summary>
- /// 登录功能,将用户ID和ConntectionId关联起来
- /// </summary>
- /// <param name="userId"></param>
- public void Login(string userId)
- {
- if (!dictUsers.ContainsKey(userId))
- {
- dictUsers[userId] = Context.ConnectionId;
- }
- Console.WriteLine($"{userId}登录成功,ConnectionId={Context.ConnectionId}");
- //向所有用户发送当前在线的用户列表
- Clients.All.SendAsync("Users", dictUsers.Keys.ToList());
- }
- /// <summary>
- /// 退出功能,当客户端退出时调用
- /// </summary>
- /// <param name="userId"></param>
- public void Logout(string userId)
- {
- if (dictUsers.ContainsKey(userId))
- {
- dictUsers.Remove(userId);
- }
- Console.WriteLine($"{userId}退出成功,ConnectionId={Context.ConnectionId}");
- }
- }
- }
|