Ejemplo n.º 1
0
        private MessengerUserDetailsViewModel GenerateAnonymousUser(MessengerRequestViewModel request)
        {
            defaultName = Context.ConnectionId;

            var user = new MessengerUserDetailsViewModel()
            {
                Name         = request.UserName ?? defaultName,
                Avatar       = request.Avatar ?? defaultAvatar,
                ConnectionId = Context.ConnectionId,
                CreatedDate  = DateTime.UtcNow,
                MyRooms      = new List <MessengerRoomViewModel>(),
                MyTeams      = new List <MessengerTeamViewModel>()
            };

            return(user);
        }
Ejemplo n.º 2
0
        public async Task HubConnect(MessengerRequestViewModel request)
        {
            string errorMsg = string.Empty;

            request.ConnectionId = Context.ConnectionId;
            RepositoryResponse <MessengerUserDetailsViewModel> result = new RepositoryResponse <MessengerUserDetailsViewModel>();

            if (string.IsNullOrEmpty(request.UserName))
            {
                var user = GenerateAnonymousUser(request);
                result.Data      = user;
                result.IsSucceed = true;
            }
            else
            {
                result = await MessengerUserDetailsViewModel.JoinChatAsync(request);
            }

            string action = Enum.GetName(typeof(MessageReponseKey), MessageReponseKey.Connect);

            result.Status = result.IsSucceed ? 1 : 0;
            if (result.IsSucceed)
            {
                result.ResponseKey = action;
                var user = result.Data;
                //Users.Add(new Swastika.Domain.Core.Models.SignalRClient()
                //{
                //    UserId = user.Id,
                //    NickName = user.Name,
                //    ConnectionId = user.ConnectionId,
                //    JoinedDate = DateTime.UtcNow
                //}
                //    );
                await Clients.Client(Context.ConnectionId).SendAsync(receiveMethod, result);
                await UpdateOnlineStatus(user.MyRooms, user.Id, true);
            }
            else
            {
                await Clients.Client(Context.ConnectionId).SendAsync(receiveMethod, result);
            }
        }