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 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; } }