public override Task OnConnected()
        {
            Debug.Print($"User connected {Context.User.Identity.Name}");

            var userId = Context.User.Identity.GetUserId();
            var state  = hubService.Connect(userId, Context.ConnectionId);

            var dialogIdsTask = hubService.GetUserDialogIds(userId);

            dialogIdsTask.Wait();
            var dialogIds = dialogIdsTask.Result;

            foreach (var dialogId in dialogIds)
            {
                if (!state.IsNewUser)
                {
                    Groups.Remove(state.OldConnectionId, dialogId.ToString());
                }
                Groups.Add(Context.ConnectionId, dialogId.ToString());
            }

            if (state.IsNewUser)
            {
                Debug.Print("new user");
                Clients.Clients(hubService.GetOnlineIds()).notifyOnline(userId, true);
            }

            return(base.OnConnected());
        }