Beispiel #1
0
        public void SerializeTextChatMessageTest()
        {
            var userId    = 4;
            var roomId    = "55-178";
            var firstName = "John";
            var lastName  = "Brawn";
            var text      = "Message text.";

            var messageToSerialize = new TextChatMessage()
            {
                RoomId = roomId, FirstName = firstName, LastName = lastName, Text = text, UserId = userId
            };

            string serializedMessage = JsonConvert.SerializeObject(messageToSerialize);

            Assert.AreEqual("{\"userId\":4,\"roomId\":\"55-178\",\"firstName\":\"John\",\"lastName\":\"Brawn\",\"text\":\"Message text.\"}",
                            serializedMessage);

            var textMessageInTuple = Tuple.Create(new List <ITextChatMessage> {
                messageToSerialize
            });
            string textMessageInTupleJson = JsonConvert.SerializeObject(textMessageInTuple, new TupleJsonArrayConverter());

            Assert.AreEqual($"[[{serializedMessage}]]", textMessageInTupleJson);
        }
Beispiel #2
0
        public void MessageAllClients(string msg, bool sendAsServer = true, bool printToConsole = true, bool printtoGui = true)
        {
            if (string.IsNullOrEmpty(msg))
            {
                return;
            }
            byte[] guid = Guid.NewGuid().ToByteArray();

            TextChatMessage textChatMessage = new TextChatMessage();

            textChatMessage.GUID        = BitConverter.ToInt64(guid, 0);
            textChatMessage.Name        = (sendAsServer ? "Server" : "");
            textChatMessage.MessageText = msg;
            try
            {
                m_network.SendToAllClients(textChatMessage, (textChatMessage).Sender);
            }
            catch (Exception)
            {
                Log.Instance.Warn(HES.Localization.Sentences["PlayerNotConnected"]);
            }

            if (printtoGui)
            {
                HES.GUI.AddChatLine(String.Format("{0} - {1}: {2}", DateTime.Now.ToLocalTime(), textChatMessage.Name, msg));
            }

            if (printToConsole)
            {
                chatlogger.Info((string)textChatMessage.Name + ": " + msg);
            }
        }
Beispiel #3
0
        public void GetHistoryTest()
        {
            var roomId  = "french";
            var storage = new TextChatDbStorage();
            var message = new TextChatMessage
            {
                UserId     = 1,
                FirstName  = "Alice",
                LastName   = "V",
                RoomId     = roomId,
                Text       = "GetHistoryTest = Hello World!",
                Visibility = MessageVisibility.Everyone,
                DeviceTag  = 0
            };

            storage.AddMessageAsync(message);

            var messages = storage.GetHistory(roomId, new List <MessageVisibility> {
                MessageVisibility.Everyone
            }, 3);
            var lastMessage = messages.LastOrDefault();

            Assert.IsTrue(messages.Count <= 3);
            Assert.IsNotNull(lastMessage);
            Assert.AreEqual(message.When, lastMessage.When);
            Assert.IsTrue(message.UserId == lastMessage.UserId);
            Assert.AreEqual(message.FirstName, lastMessage.FirstName);
            Assert.AreEqual(message.RoomId, lastMessage.RoomId);
            Assert.AreEqual(message.Text, lastMessage.Text);
            Assert.AreEqual(message.Visibility, lastMessage.Visibility);
        }
        public void Events()
        {
            var validUser = new User {
                Id = AliceUserId, Status = new UsersStatus {
                    Id = UserStatuses.Valid
                }
            };
            var sgClientMock = new Mock <IEmailSender>();
            var controller   = new TextChatController(/*sgClientMock.Object*/);
            var events       = new Queue <string>();

            var aliceChatUser = new TextChatUser {
                FirstName = AliceName, LastName = "A.", Knows = AliceKnows, Learns = AliceLearns, Id = AliceUserId
            };
            var message = new TextChatMessage {
                UserId = AliceUserId, FirstName = AliceName, RoomId = EnglishRoomId, Text = AliceMessageText, Visibility = MessageVisibility.Nobody
            };
            UserId aliceUserId = null;

            controller.OnUserJoinedRoom += (roomId, userId) => { aliceUserId = userId; events.Enqueue($"{userId} joined {roomId}"); };
            controller.OnPostedMessage  += (msg) => { events.Enqueue(msg.Text); };


            controller.JoinChat(AliceUserId, aliceChatUser);
            controller.JoinRoom(AliceUserId, EnglishRoomId);
            controller.PostTo(validUser, message).Wait();

            Assert.AreEqual($"{aliceUserId} joined {EnglishRoomId}", events.Dequeue());
            Assert.AreEqual(AliceMessageText, events.Dequeue());
            Assert.AreEqual(0, events.Count);
        }
Beispiel #5
0
        public void AddMessageTest()
        {
            var storage = new TextChatDbStorage();
            var message = new TextChatMessage
            {
                UserId     = 1,
                FirstName  = "Bernard",
                LastName   = "V",
                RoomId     = "english",
                Text       = "AddMessageTest = Hello World!",
                Visibility = MessageVisibility.Everyone,
                DeviceTag  = 0
            };

            storage.AddMessageAsync(message);

            // check last message
            DataAccess.TextChat savedMessage;
            using (var db = new HellolingoEntities())
            {
                savedMessage = db.TextChats.OrderByDescending(a => a.ID).FirstOrDefault();
            }

            Assert.IsNotNull(savedMessage);
            Assert.AreEqual(message.When, savedMessage.When);
            // ReSharper disable once PossibleInvalidOperationException
            Assert.AreEqual(message.UserId, new UserId(savedMessage.UserId.Value));
            Assert.AreEqual(0, savedMessage.DeviceTag, "DeviceTag must be null");
            Assert.AreEqual(message.FirstName, savedMessage.FirstName);
            Assert.AreEqual(message.RoomId.ToString(), savedMessage.RoomId);
            Assert.AreEqual(message.Text, savedMessage.Text);
            Assert.AreEqual((byte)message.Visibility, savedMessage.Visibility);
        }
Beispiel #6
0
        public void TextChatMessageListener(NetworkData data)
        {
            TextChatMessage textChatMessage = data as TextChatMessage;
            String          Msg             = textChatMessage.MessageText;

            if (Msg.StartsWith("/"))
            {
                Player player1 = Server.GetPlayer(textChatMessage.Sender);
                textChatMessage.Name = player1.Name;

                string[] chatCommandArray = Msg.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string   command          = chatCommandArray.First();
                //Send to COmmand Manager
                if (chatCommandArray.Length > 1)
                {
                    CommandManager.HandlePlayerCommand(chatCommandArray.First().Replace("/", ""), chatCommandArray.Skip(1).ToArray(), player1);
                }
                else
                {
                    CommandManager.HandlePlayerCommand(chatCommandArray.First().Replace("/", ""), new String[] { }, player1);
                }

                return;
            }
            Server.TextChatMessageListener(data);
        }
        private async void AddReceivedMessage(NetworkData networkMessage)
        {
            if (networkMessage.DataType == NetworkDataType.Message)
            {
                TextChatMessage visibleMessage = new TextChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                     networkMessage.Data);
                TextChatMessage hiddenMessage = new TextChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                    networkMessage.Data, Visibility.Hidden);

                Application.Current.Dispatcher.Invoke(() =>
                {
                    AddMessage(visibleMessage, hiddenMessage, true);
                });
            }
            else if (networkMessage.DataType == NetworkDataType.Image)
            {
                string fileName  = networkMessage.Data.Split(new char[] { ' ' }, 2)[0];
                string imageData = networkMessage.Data.Split(new char[] { ' ' }, 2)[1];
                Console.WriteLine(fileName);
                Console.WriteLine(imageData);
                Bitmap receivedBitmap = ImageService.StringToBitmap(imageData);

                string imagePath = await FileService.SaveImage(receivedBitmap, fileName, false);

                ImageChatMessage visibleImage = new ImageChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                     imagePath);
                ImageChatMessage hiddenImage = new ImageChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                    imagePath, Visibility.Hidden);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    AddMessage(visibleImage, hiddenImage, true);
                });
            }
        }
        public void Send(MessageModel Message)
        {
            SendStateObject state = new SendStateObject();

            state.WorkSocket = _ConSocket;
            state.extra      = Message;

            MessageBase sendMessage = null;

            if (Message is TextMessageModel)
            {
                sendMessage = new TextChatMessage((TextMessageModel)Message, Model.Username, Model.id);
            }
            else if (Message is ImageMessageModel)
            {
                sendMessage = new ImageChatMessage((ImageMessageModel)Message, Model.Username, Model.id);
            }
            else if (Message is BuzzMessageModel)
            {
                sendMessage = new BuzzMessage(Model.Username, Model.id);
            }
            string serializedMessage = sendMessage.Serialize();

            byte[] byteMessage = Encoding.UTF8.GetBytes(serializedMessage);
            state.MessageLength = byteMessage.Length;
            try
            {
                state.WorkSocket.BeginSend(byteMessage, 0, state.MessageLength, SocketFlags.None, SendCallback, state);
            }
            catch (Exception ex) when(ex is SocketException || ex is NullReferenceException)
            {
                throw new NoConnectionException();
            }
        }
        public void SendMessageToClient(Player p, String message, String from)
        {
            TextChatMessage packet = new TextChatMessage();

            packet.GUID        = p.GUID;
            packet.Local       = true;
            packet.Name        = "Server";
            packet.MessageText = message;
            GetServer.NetworkController.SendToGameClient(p.GUID, packet);
        }
Beispiel #10
0
        private void TextChatMessageListener(NetworkData data)
        {
            try
            {
                TextChatMessage textChatMessage = data as TextChatMessage;

                chatlogger.Info("(" + textChatMessage.Sender + ")" + textChatMessage.Name + ": " + textChatMessage.MessageText);
            }
            catch (Exception ex)
            {
                Log.Instance.Error("Hellion Extended Server [MSG REQUEST ERROR] : " + ex.InnerException.ToString());
            }
        }
Beispiel #11
0
        /// <summary>
        /// This method is invoked when the event is fired
        /// </summary>
        /// <param name="data"> the network data object</param>
        private void TextChatMessageListener(NetworkData data)
        {
            try
            {
                TextChatMessage textChatMessage = data as TextChatMessage;

                Console.WriteLine("(" + textChatMessage.Sender + ")" + textChatMessage.Name + ": " + textChatMessage.MessageText);
            }
            catch (Exception ex)
            {
                Console.WriteLine("[ERROR] Hellion Extended Server[Chat]:" + ex.InnerException.ToString());
            }
        }
        private async void SendTextMessage()
        {
            NetworkData networkMessage = new NetworkData(User, NetworkDataType.Message, InputMessage);

            InputMessage = "";
            TextChatMessage visibleMessage = new TextChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                 networkMessage.Data);
            TextChatMessage hiddenMessage = new TextChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                networkMessage.Data, Visibility.Hidden);

            Application.Current.Dispatcher.Invoke(() =>
            {
                AddMessage(visibleMessage, hiddenMessage);
            });

            Console.WriteLine($"STATUS: Sending a message > {networkMessage.Data}");
            await Connection.SendNetworkData(networkMessage);
        }
Beispiel #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="msg">the message to send</param>
        /// <param name="sendAsServer"> sends Server as the name of the message</param>
        /// <param name="printToConsole"> prints the message to the console</param>
        public void MessageAllClients(string msg, bool sendAsServer = true, bool printToConsole = true)
        {
            if (String.IsNullOrEmpty(msg))
            {
                return;
            }

            byte[] guid = Guid.NewGuid().ToByteArray();

            TextChatMessage textChatMessage = new TextChatMessage();

            textChatMessage.GUID        = BitConverter.ToInt64(guid, 0);
            textChatMessage.Name        = (sendAsServer ? "Server :" : "");
            textChatMessage.MessageText = msg;
            m_network.SendToAllClients((NetworkData)textChatMessage, textChatMessage.Sender);

            if (printToConsole)
            {
                Console.WriteLine(textChatMessage.Name + "" + msg);
            }
        }
Beispiel #14
0
        public void MessageToClient(string msg, string SenderName, string ReceiverName)
        {
            if (string.IsNullOrEmpty(msg))
            {
                return;
            }
            byte[] guid = Guid.NewGuid().ToByteArray();

            TextChatMessage textChatMessage = new TextChatMessage();

            textChatMessage.GUID        = BitConverter.ToInt64(guid, 0);
            textChatMessage.Name        = (SenderName);
            textChatMessage.MessageText = msg;

            if (ConnectedPlayer(ReceiverName, out Player player))
            {
                m_network.SendToGameClient(GetClient(player).ClientGUID, textChatMessage);
                chatlogger.Info((string)textChatMessage.Name + "->" + ReceiverName + ": " + msg);
            }
            else
            {
                Console.WriteLine(HES.Localization.Sentences["PlayerNotConnected"]);
            }
        }