欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

MQTT通讯之连接MQTT服务器

时间:2023-08-12

根据 添加链接描述
和 添加链接描述

我的APP已经成功连接上MQTT服务器,至于怎么发布和接收,正在研究,研究好了,发上来。
作者写的代码是Java的,但现在都推荐Kotlin

我就把转好的Kotlin代码发出来

package com.example.mqtt_kotlinimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.Toastimport com.example.mqtt_kotlin.Rimport org.eclipse.paho.android.service.MqttAndroidClientimport org.eclipse.paho.client.mqttv3.IMqttActionListenerimport org.eclipse.paho.client.mqttv3.IMqttDeliveryTokenimport org.eclipse.paho.client.mqttv3.IMqttTokenimport org.eclipse.paho.client.mqttv3.MqttCallbackExtendedimport org.eclipse.paho.client.mqttv3.MqttConnectOptionsimport org.eclipse.paho.client.mqttv3.MqttMessageclass MainActivity : AppCompatActivity() { private val serverUri = "tcp://mqtt.hui-ke.com:1883" private val userName = "admin" private val passWord = "admin" private val clientId = "mqtt_kotlin手机客户端" private val mqtt_sub_topic = "Android_Get" //需要订阅的主题 private val mqtt_pub_topic = "Android_Set" //需要发布的主题 private var mqtt_client: MqttAndroidClient? = null //创建一个mqtt_client对象 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mqtt_init_Connect() } fun mqtt_init_Connect() { try { //实例化mqtt_client,第一个参数是app的上下文,直接填入就行,然后填入我们定义的serverUri和clientId mqtt_client = MqttAndroidClient(applicationContext, serverUri, clientId) //创建并实例化一个MQTT的连接参数对象 val options = MqttConnectOptions() //然后设置对应的参数 options.userName = userName //设置连接的用户名 options.password = passWord.toCharArray() //设置连接的密码 options.connectionTimeout = 30 // 设置超时时间,单位为秒 options.keepAliveInterval = 60 //设置心跳,30s options.isAutomaticReconnect = true //是否重连 //设置是否清空session,设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接 options.isCleanSession = true //设置回调 mqtt_client!!.setCallback(object : MqttCallbackExtended { override fun connectComplete(reconnect: Boolean, serverURI: String) { //连接成功 makeToast("连接成功") } override fun connectionLost(cause: Throwable) { //连接丢失后,一般在这里面进行重连 makeToast("连接中断") } override fun deliveryComplete(token: IMqttDeliveryToken) { //publish后会执行到这里 } @Throws(Exception::class) override fun messageArrived(topicName: String, message: MqttMessage) { //subscribe后得到的消息会执行到这里面 } }) mqtt_client!!.connect(options) } catch (e: Exception) { e.printStackTrace() } } private fun makeToast(toast_str: String) { Toast.makeText(this@MainActivity, toast_str, Toast.LENGTH_LONG).show() }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。