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); }
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); } }
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); }
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); }
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); }
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()); } }
/// <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); }
/// <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); } }
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"]); } }