Beispiel #1
0
        /// <summary>
        /// 连接重连时触发
        /// </summary>
        /// <returns></returns>
        public override Task OnReconnected()
        {
            var userName     = Context.QueryString["userName"];
            var connectionId = Context.ConnectionId;

            OnLineUserService.AddOnLineUser(connectionId, userName);
            return(base.OnReconnected());
        }
Beispiel #2
0
        /// <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);
                }
            }
        }
Beispiel #3
0
        /// <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));
        }
Beispiel #4
0
 public List <string> GetAllOnLineUser()
 {
     return(OnLineUserService.GetAllOnLineUses());
 }
Beispiel #5
0
 /// <summary>
 /// 广播更改后的在线用户
 /// 有定时器调用
 /// </summary>
 private void Broadcast()
 {
     _context.Clients.All.onLineUsersChange(OnLineUserService.GetAllOnLineUses());
 }