Beispiel #1
0
        public override Task OnConnected()
        {
            var name = LOGIN_ACCOUNT;

            using (var db = new SignalR_MapUsersModel())
            {
                var user = db.Users
                           .Include(u => u.Connections)
                           .SingleOrDefault(u => u.UserName == name);

                if (user == null)
                {
                    user = new User
                    {
                        UserName    = name,
                        CreateTime  = DateTime.Now,
                        Connections = new List <Connection>()
                    };
                    db.Users.Add(user);
                }

                user.Connections.Add(new Connection
                {
                    ConnectionID = Context.ConnectionId,
                    UserAgent    = Context.Request.Headers["User-Agent"],
                    CreateTime   = DateTime.Now,
                    UpdateTime   = DateTime.Now,
                    Connected    = true
                });
                db.SaveChanges();
            }
            Base_Online();
            return(base.OnConnected());
        }
Beispiel #2
0
 /// <summary>
 /// 检测断开原因
 /// </summary>
 /// <param name="stopCalled"></param>
 /// <returns></returns>
 public override Task OnDisconnected(bool stopCalled)
 {
     if (stopCalled)
     {
         Console.WriteLine(String.Format("Client {0} explicitly closed the connection.", Context.ConnectionId));
     }
     else
     {
         Console.WriteLine(String.Format("Client {0} timed out .", Context.ConnectionId));
     }
     using (var db = new SignalR_MapUsersModel())
     {
         var connection = db.Connections.Find(Context.ConnectionId);
         db.Connections.Remove(connection);
         //connection.Connected = false;
         //connection.UpdateTime = DateTime.Now;
         db.SaveChanges();
     }
     Base_Offline();
     return(base.OnDisconnected(stopCalled));
 }