栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

MQTT通讯之连接MQTT服务器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号