2015-09-14 2 views
4

Я хочу реализовать мессенджер так же, как whatsapp, используя протокол MQTT. Какие учебные пособия мне следует читать?Как реализовать мессенджер типа whatsapp с помощью MQTT?

Я смущен о нескольких вещах:

  1. Как я должен реализовать тему структуру для обмена сообщениями? (В настоящее время я использую/domainname/phonenumber/(Если телефон A отправляет сообщение на телефон B, он опубликует сообщение в/domainname/B /)
  2. Если клиент B выходит в автономный режим и через некоторое время приходит в Интернет, как он будет получать сообщения, отправленные на него (к теме/имя_домен/B /), а клиент был отключен?
  3. Как реализовать отосланный/доставлено/прочитать подтверждение?

Я понимаю, что это очень основные вопросы, но, к сожалению, я не смог найти какие-либо ресурсы, которые будут направляться на начальные этапы.

Вывод:
После разговора с людьми, которые уже внедрили развертывание широкомасштабных мессенджеров в MQTT, я пришел к выводу, что MQTT следует использовать только протокол. Pub/Sub хорош для начала, но у вас должен быть слой вашей собственной бизнес-логики для гибкости и производительности. Тем не менее, вы можете реализовать большинство требований основного мессенджера, используя pub/sub tree, но вы будете ограничены этим, и это будет трудно расширить позже.

+0

Если у вас есть решение, можете ли вы поделиться им? – manish

+0

@Toomuchtolearn Yup, после того, как люди, которые уже внедрили развертывание широкомасштабных мессенджеров в MQTT, пришли к выводу, что MQTT следует использовать только протокол. Pub/Sub хорош для начала, но у вас должен быть слой вашей собственной бизнес-логики для гибкости и производительности. Однако вы можете реализовать его с помощью pub/sub tree, но вы будете ограничены этим, и это будет сложно продлить позже. –

+0

скажем, для приложения типа whatsapp у нас есть выбор «XMPP» и «MQTT». Я слышал, что MQTT очень легкий, поэтому аккумулятор дружелюбный, но XMPP слишком тяжелый по сравнению с MQTT. ТАК, что вы берете эти два и с чем будете? – manish

ответ

4
  1. Тема структура выглядит хорошо, но, вероятно, должен иметь ACL на месте так клиенты могут подписаться только на свои собственные темы.
  2. До тех пор, пока вы не установите для параметра «cleansession» значение true, брокер должен хранить и пересылать любые сообщения, отправленные в тему, на которую был подписан клиент, до ее отсоединения.
  3. MQTT не содержит поддержки отправленных/доставленных/read, вам нужно будет реализовать это самостоятельно, проще всего будет иметь 2 темы для каждого клиента, один для приема сообщений и один для получения уведомлений. Каждое сообщение должно иметь номер идентификатора, который может использоваться в уведомлениях, отправленных обратно исходному отправителю.
+0

Я тестировал клиента, используя mqtt: //test.mosquitto.org для пункта 2. У него есть «очищение»? Поскольку он не возвращал сообщения, когда абонент подключается к Интернету. –

+1

cleansession - это вариант клиента, а не вариант брокера. Он также зависит от идентификатора клиента. Прочтите это для лучшего объяснения. Http://www.hivemq.com/mqtt-essentials-part-7-persistent-session-queuing-messages/ – hardillb

+0

Спасибо за ссылку. –