示例#1
0
        private ChatMessagesResponse CreateUserLoginMessage(UserLogin userLogin)
        {
            ChatMessagesResponse response = new ChatMessagesResponse()
            {
                SendFromUserId = userLogin.Id,
                UserLogin      = new UserLogin()
                {
                    Id   = userLogin.Id,
                    Name = userLogin.Name
                }
            };

            return(response);
        }
示例#2
0
        private ChatMessagesResponse CreateChatMessage(ChatMessage chatMessage, UserLogin userLogin)
        {
            ChatMessagesResponse response = new ChatMessagesResponse()
            {
                SendFromUserId   = userLogin.Id,
                SendFromUserName = userLogin.Name,
                ChatMessage      = new ChatMessage()
                {
                    Id      = chatMessage.Id,
                    Message = chatMessage.Message
                }
            };

            return(response);
        }
示例#3
0
        /// <summary>
        ///     Send our message.
        /// </summary>
        private async Task SendMessage()
        {
            // If we have tried to send a zero length string we just return
            if (messageText.Text == string.Empty)
            {
                return;
            }

            var request = new ChatMessagesRequest()
            {
                ChatMessage = new ChatMessage()
                {
                    Id      = userId,
                    Message = messageText.Text
                }
            };

            outgoingMessages.Add(request, cancellationTokenSource.Token);

            var responseToMe = new ChatMessagesResponse()
            {
                SendFromUserId   = userId,
                SendFromUserName = userName,
                ChatMessage      = request.ChatMessage
            };

            await OutputMessage(responseToMe);

            /*
             * var random = new Random();
             * while (true)
             * {
             *      var randomMessage = random.Next(1, 1000);
             *      await SendMessageOverTheWire(randomMessage.ToString());
             *      await Task.Delay(2);
             * }
             */

            messageText.Clear();
        }
示例#4
0
        private async Task OutputMessage(ChatMessagesResponse response)
        {
            switch (response.MessagesCase)
            {
            case ChatMessagesResponse.MessagesOneofCase.None:
                break;

            case ChatMessagesResponse.MessagesOneofCase.ChatMessage:
                await AppendLineToChatBox($"[{response.SendFromUserName}]: {response.ChatMessage.Message}");

                break;

            case ChatMessagesResponse.MessagesOneofCase.UserLogin:
                await AppendLineToChatBox($"[{response.UserLogin.Name}] connected.");

                break;

            case ChatMessagesResponse.MessagesOneofCase.UserLogout:
                await AppendLineToChatBox($"[{response.UserLogout.Name}] disconnected.");

                break;
            }
        }
示例#5
0
 private void NewOutgoingMessage(ChatMessagesResponse chatMessagesResponse)
 {
     Pusher.OnNext(chatMessagesResponse);
 }