一、介绍
MQTT 协议 是基于发布/订阅模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点,占据了物联网协议的半壁江山。
常用于 IOT 物联网和一些需要服务端主动通知客户端的场景。
二、使用
1. 导入依赖
dependencies {
implementation 'com.jinyx.mqtt:mqtt:0.0.1'
}
2. 创建 MqttHelper 辅助类,设置回调监听
private lateinit var mqttHelper: MqttHelper
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val options = MqttOptions(
serviceUrl = "tcp://192.168.0.106:61613", // MQTT 服务
username = "admin",
password = "password",
clientId = "android-${System.currentTimeMillis()}", // MQTT 客户端ID, 唯一标识,如果存在多个 MQTT 对象使用同一个 clientId,会导致相互之间不断被挤掉再重连
willTopic = "will/android", // 遗嘱 Topic,不能存在通配符 # 和 +,可用于监听对方是否掉线
willMsg = "I'm Died - $Id" // 遗嘱消息,当客户端掉线,MQTT 服务发送pingreq包,客户端不回复 pingresp包,MQTT 发送遗嘱消息到 订阅 willTopic 的客户端
)
mqttHelper = MqttHelper(this, options)
mqttHelper.addOnMsgListener(onMqttMsgListener)
mqttHelper.addOnStatusChangeListener(onMqttStatusChangeListener)
}
3. 连接 MQTT
mqttHelper.connect()
连接成功或失败,以及中途的连接掉线,会触发 OnMqttStatusChangeListener 回调