public void PublishNewMessageAsync(Message message) { string topic = string.Format("{0}/{1}", message.Receiver, PhoneNumber); byte[] data = Encoding.UTF8.GetBytes(message.Text); if (mqttClient.IsConnected) { mqttClient.Publish(topic, data, MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, true); AppDataBase.SaveItemAsync(message); } }
public void ClientMqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { string receivedMessage = Encoding.Default.GetString(e.Message); string[] topicLevels = e.Topic.Split('/'); if (topicLevels.Length == 2) { string messageSender = topicLevels[1]; Message message = new Message() { Text = receivedMessage, Sender = messageSender, Receiver = PhoneNumber, CreatedTime = DateTime.Now, Status = MessageStatus.NotRead }; AppDataBase.SaveItemAsync(message); MessagingCenter.Send(this, "newMessageReceived", message); } }