Example #1
0
 //Client disconnected
 //TODO: disconnect from room
 public Task Disconnect()
 {
     var sessionState = mCache.GetSessionState(Context.ConnectionId);
     if (sessionState != null)
     {
         var model = new UserStateModel
        {
            Id = sessionState.Id,
            Room = sessionState.Room,
            Language = sessionState.Language,
            Name = sessionState.Name,
            State = "left room",
            Avatar = sessionState.Avatar,
            Remove = true
        };
         mCache.LeaveRoom(sessionState.Room, sessionState.Id);
         mCache.RemoveUser(sessionState.Id);
         Clients[sessionState.Room].userStateChanged(model);
     }
     return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
 }
Example #2
0
 public void JoinRoom(string oldRoom, string room, string id, string user, string language)
 {
     var ret = mCache.JoinRoom(oldRoom, room, id, user, language);
     if (oldRoom != room && !string.IsNullOrEmpty(oldRoom))
     {
         Groups.Remove(Context.ConnectionId, oldRoom).Wait(); //group for chatroom state updates
         Groups.Remove(Context.ConnectionId, string.Format(LanguageRoom, oldRoom, language)).Wait(); //group for specific language updates
         Clients[oldRoom].userStateChanged(
         new UserStateModel
         {
             Id = ret.UserId,
             Language = language,
             Name = ret.UserName,
             Room = oldRoom,
             State = "left room",
             Avatar = ret.UserAvatar,
             Remove = true
         });
     }
     Groups.Add(Context.ConnectionId, ret.Name).Wait(); //group for chatroom state updates
     Groups.Add(Context.ConnectionId, string.Format(LanguageRoom, ret.Name,language)).Wait(); //group for specific language updates
     var state = new UserStateModel
         {
             Id = ret.UserId,
             Language = language,
             Name = ret.UserName,
             Room = room,
             State = "joined room",
             Avatar = ret.UserAvatar,
             Remove = false
         };
     mCache.SaveSession(Context.ConnectionId, new UserStateEntity(Context.ConnectionId, ret.UserId.ToString())
         {
             Language = language,
             Name = ret.UserName,
             Room = room,
             State = "joined room",
             Avatar = ret.UserAvatar,
             Remove = false
         });
     Clients[ret.Name.ToString()].roomJoined(ret);
     Clients[ret.Name.ToString()].userStateChanged(state);
 }