MQTT通讯之连接MQTT服务器

MQTT通讯之连接MQTT服务器,第1张

MQTT通讯之连接MQTT服务器

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

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

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

package com.example.mqtt_kotlin

import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle
import android.widget.Toast
import com.example.mqtt_kotlin.R

import org.eclipse.paho.android.service.MqttAndroidClient
import org.eclipse.paho.client.mqttv3.IMqttActionListener
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken
import org.eclipse.paho.client.mqttv3.IMqttToken
import org.eclipse.paho.client.mqttv3.MqttCallbackExtended
import org.eclipse.paho.client.mqttv3.MqttConnectOptions
import org.eclipse.paho.client.mqttv3.MqttMessage

class 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()
    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5721807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存