如何使用MQTT实现whatsapp类型信使?

时间:2015-09-14 19:38:17

标签: mqtt instant-messaging messenger

我想像使用MQTT协议的whatsapp一样实现一个信使。 我应该阅读哪些教程?

我对一些事情感到困惑:

  1. 我应该如何实现消息传递的主题结构? (目前我正在使用/ domainname / phonenumber /(如果手机A是什么发送消息到手机B,它会发布消息到/ domainname / B /)
  2. 如果客户B离线并在一段时间后上线,当客户端离线时,它将如何收到发送给他的消息(到主题/域名/ B /)?
  3. 如何实施发送/发送/读取确认?
  4. 我知道这些都是非常基本的问题,但不幸的是我找不到任何可以指导初步步骤的资源。

    结论:
    在与已经在MQTT中实施大规模信使部署的人交谈之后,我得出结论,MQTT应该只是一个协议。 Pub / Sub很适合开始,但您应该拥有一层自己的业务逻辑,以实现灵活性和性能。但是,您可以使用pub / sub树实现大多数基本信使要求,但是您将受限于它,以后将很难扩展。

3 个答案:

答案 0 :(得分:5)

  1. 主题结构看起来很好,但可能应该有一个ACL 客户只能订阅自己的主题。
  2. 只要您没有将“cleansession”选项设置为true,那么代理应该存储并转发发送到客户端在断开连接之前订阅的主题的任何消息
  3. MQTT不包含对已发送/已发送/已读通知的支持,您需要自己实现此方法,最简单的方法是每个客户端有2个主题,一个用于接收消息,另一个用于接收通知。每条消息都应具有可在发送回原始发件人的通知中使用的ID号

答案 1 :(得分:0)

我已经由react native客户端实现了基本的mqtt功能,它能够使用标准的mqtt服务器发送/接收消息,并且所有代码都已集成到rnset项目中,这是一个github react native项目。
您可以从here签出。
运行rnset之后,您可以从rnset->功能(demos)->MQTTChat

查看演示

答案 2 :(得分:0)

rnset / qmtt / mqttbox; 实际上,rnset / mqtt演示正在4G上运行在我的iphon7p上,而mqttbox在我的Mac上运行,可以同时接收到消息。

UI IPhone / Mac:

UI IPhone/Mac