public void ReceiveMessage(Message message) { switch (message.Type) { case MessageType.TextMessage: MessageIncomeEvent?.Invoke(message); break; case MessageType.ImageMessage: ImageMessageIncomeEvent?.Invoke(message); break; case MessageType.ConnectMessage: NewUserJoinedEvent?.Invoke(message.SenderUserName); if (message.SenderUserName != Name) { _channel.SendMessageToUser(message.SenderUserName, new Message() { SenderUserName = Name, Type = MessageType.IsOnlineMessage }); } break; case MessageType.DisconnectMessage: UserDisconnectEvent?.Invoke(message.SenderUserName); break; case MessageType.IsOnlineMessage: UserIsOnlineEvent?.Invoke(message.SenderUserName); break; } }
public void SendMessage(string message, string userName, byte[] image = null) { var msg = new Message() { Type = image == null ? MessageType.TextMessage : MessageType.ImageMessage, SenderUserName = Name, Content = message, ReceiverUserName = userName, ImageData = image, }; if (userName == null) { _channel.BroadcastMessageToAll(msg); } else { _channel.SendMessageToUser(userName, msg); if (image == null) { MessageIncomeEvent?.Invoke(msg); } else { ImageMessageIncomeEvent?.Invoke(msg); } } }
public void SendMessage(string cryptedMessage) { Message msg = null; try { var textMsg = Cipher.Decrypt(cryptedMessage, PassPhrase); msg = Message.Deserialize(textMsg); } catch (Exception e) { //any error while decrypting or deserializating is considered as fail return; } if (msg == null) { return; } switch (msg.Type) { case MessageType.TextMessage: MessageIncomeEvent?.Invoke(msg.SenderUserId, msg.SenderUserName, msg.Content); break; case MessageType.HelloMessage: if (msg.SenderUserId == _id) { return; } NewUserJoinedEvent?.Invoke(msg.SenderUserId); MessageIncomeEvent?.Invoke(msg.SenderUserId, msg.SenderUserName, "connected"); SendJoinMessage(msg.SenderUserId); _channel.ConnectWithUser(msg.SenderUserId); break; case MessageType.UnconnectMessage: MessageIncomeEvent?.Invoke(msg.SenderUserId, msg.SenderUserName, "disconnected"); break; case MessageType.JoinMessage: NewUserJoinedEvent?.Invoke(msg.SenderUserId); MessageIncomeEvent?.Invoke(msg.SenderUserId, msg.SenderUserName, "is online"); _channel.ConnectWithUser(msg.SenderUserId); break; case MessageType.FileMessage: FileIncomeEvent?.Invoke(msg.SenderUserId, msg.SenderUserName, msg.Content, msg.AdditionalData); break; default: break; } }
public void SendMessageToConnected(string text) { var jsonMsg = Message.Serialize(new Message() { SenderUserName = Name, SenderUserId = _id, Type = MessageType.TextMessage, Content = text }); _channel.BroadcastMessageToConnectedUsers(Cipher.Encrypt(jsonMsg, PassPhrase)); MessageIncomeEvent?.Invoke(_id, Name, text); }
public void SendFileToConnected(string originalFileName, string cryptedFileName) { var jsonMsg = Message.Serialize(new Message() { SenderUserName = Name, SenderUserId = _id, Type = MessageType.FileMessage, Content = originalFileName, AdditionalData = cryptedFileName, }); _channel.BroadcastMessageToConnectedUsers(Cipher.Encrypt(jsonMsg, PassPhrase)); MessageIncomeEvent?.Invoke(_id, Name, $"You sent file: {originalFileName}"); }