示例#1
0
        public Task ChatRoomJoin(string chatRoomName)
        {
            return(Task.Run(() =>
            {
                var chatRoom = chatRoomService.GetChatRoom(chatRoomName);
                if (chatRoom == null)
                {
                    return;
                }

                if (chatRoom.HasParticipant(Context.User))
                {
                    return;
                }

                if (chatRoom.RoomType == ChatRoom.Type.Public)
                {
                    chatRoom.AddParticipant(Context.User);
                    var apiObject = new ChatRoomJoin
                    {
                        ChatRoom = chatRoom.ApiChatRoom(),
                        NewUser = Context.User.ApiGetUser()
                    };

                    foreach (var participant in chatRoom.GetParticipants())
                    {
                        var connection = userConnectionsService.ChatConnectionService.GetConnection(participant);
                        Clients.Client(connection).ChatRoomJoin(apiObject);
                    }
                }
            }));
        }
示例#2
0
        private async Task JoinChatRoom(ChatRoomJoin request, IServerStreamWriter <Message> responseStream)
        {
            Guid chatRoomId = Guid.Parse(request.ChatRoomId);
            var  chatRoom   = await _chatRooms.GetById(chatRoomId);

            if (chatRoom != null)
            {
                await _chatRoomService.Join(request.User, chatRoom, responseStream);
            }
        }
 public static Task ChatRoomJoin(this IClientProxy hubConnection, ChatRoomJoin apiObject)
 {
     return(hubConnection.SendAsync(ChatHubApiKeys.ChatRoomJoin, apiObject));
 }