/// <summary> /// 连接重连时触发 /// </summary> /// <returns></returns> public override Task OnReconnected() { var userName = Context.QueryString["userName"]; var connectionId = Context.ConnectionId; OnLineUserService.AddOnLineUser(connectionId, userName); return(base.OnReconnected()); }
/// <summary> /// 向客户端发送消息 /// </summary> /// <param name="message">消息</param> public void Send(Message message) { var user = Context.User; var id = Context.ConnectionId; var index = Context.User.Identity; foreach (var userName in message.ReceiveUser) { var users = OnLineUserService.GetOnLineUsers(userName); foreach (var u in users) { Clients.Client(u.ConnectionId).addNewMessageToPage(message.SendBy, message.Msg); } } }
/// <summary> /// 断开连接时触发 /// </summary> /// <param name="stopCalled"> /// true 客户端关闭连接 /// false 连接超时 /// </param> /// <returns></returns> public override Task OnDisconnected(bool stopCalled) { /** * stopCalled * true 客户端关闭连接 * false 连接超时 * */ var index = 0; while (!OnLineUserService.RemoveOnLineUser(Context.ConnectionId)) { if (index++ > 99) { /** * 做日志记录 * 在线用户删除失败 * */ break; } } return(base.OnDisconnected(stopCalled)); }
public List <string> GetAllOnLineUser() { return(OnLineUserService.GetAllOnLineUses()); }
/// <summary> /// 广播更改后的在线用户 /// 有定时器调用 /// </summary> private void Broadcast() { _context.Clients.All.onLineUsersChange(OnLineUserService.GetAllOnLineUses()); }