当前位置: 首页 > news >正文

网站设计图尺寸网站建设教程资源

网站设计图尺寸,网站建设教程资源,网址大全黄页男女,网络舆情监测存在的问题使用一个开源库#xff1a;hivemq-mqtt-client#xff0c;这是Java生态的一个MQTT客户端框架#xff0c;需要Java 8#xff0c;Android上使用的话问题不大#xff0c;需要一些额外的配置#xff0c;下面列出了相关的配置#xff0c;尤其是 packagingOptions#xff0c;…使用一个开源库hivemq-mqtt-client这是Java生态的一个MQTT客户端框架需要Java 8Android上使用的话问题不大需要一些额外的配置下面列出了相关的配置尤其是 packagingOptions不然编译不过因为框架使用了Java8新增的语言特性所以 minSdk 设置为24即Android7.0如果要兼容Android7.0以下系统可以参考这份详细文档配置一下语法脱糖的SDK Installation on Android android {defaultConfig {minSdk 24}compileOptions {sourceCompatibility JavaVersion.VERSION_8targetCompatibility JavaVersion.VERSION_8}kotlinOptions {jvmTarget 8}packagingOptions {resources {excludes [META-INF/INDEX.LIST, META-INF/io.netty.versions.properties]}} }dependencies {implementation com.hivemq:hivemq-mqtt-client:1.3.3 } 刚开始在自动连接这块花了好多时间最后才发现是设置用户名和密码的地方不对一定要在设置自动重连初始化Client的地方设置而不是连接的时候下面是一个简单的使用示例代码 MqttManager.kt import android.util.Log import com.hivemq.client.mqtt.datatypes.MqttQos import com.hivemq.client.mqtt.lifecycle.MqttClientConnectedContext import com.hivemq.client.mqtt.lifecycle.MqttClientConnectedListener import com.hivemq.client.mqtt.lifecycle.MqttClientDisconnectedContext import com.hivemq.client.mqtt.lifecycle.MqttClientDisconnectedListener import com.hivemq.client.mqtt.mqtt5.Mqtt5AsyncClient import com.hivemq.client.mqtt.mqtt5.Mqtt5Client import com.hivemq.client.mqtt.mqtt5.message.connect.connack.Mqtt5ConnAckReasonCode import com.hivemq.client.mqtt.mqtt5.message.publish.Mqtt5Publish import com.hivemq.client.mqtt.mqtt5.message.subscribe.suback.Mqtt5SubAck import java.util.UUID import java.util.concurrent.CompletableFuture import java.util.concurrent.Executors import java.util.function.Consumeropen class MqttListener {open fun onConnected() {}open fun onDisconnected() {}open fun onSubscribed(vararg topics: String) {}open fun onReceiveMessage(topic: String, data: ByteArray) {}open fun onSendMessage(topic: String, data: ByteArray) {} }/* 文档 https://github.com/hivemq/hivemq-mqtt-client https://hivemq.github.io/hivemq-mqtt-client/docs/installation/android/ */ class MqttManager private constructor() : MqttClientConnectedListener, MqttClientDisconnectedListener {private val executor Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()) {Thread(it).apply { isDaemon true }}private val mqttAsynClient: Mqtt5AsyncClient Mqtt5Client.builder().identifier(UUID.randomUUID().toString()).serverHost(SERVER_HOST).serverPort(SERVER_PORT).addConnectedListener(this).addDisconnectedListener(this).simpleAuth()//在初始化的时候设置账号密码重连才能成功.username(USERNAME).password(PASSWORD.toByteArray()).applySimpleAuth().automaticReconnectWithDefaultConfig()//自动重连.buildAsync()private val listeners mutableListOfMqttListener()private val subTopicsget() arrayOf(top1, top2, top3)fun addMqttListener(listener: MqttListener) {if (!listeners.contains(listener)) {listeners.add(listener)}}fun removeMqttListener(listener: MqttListener) {listeners.remove(listener)}override fun onConnected(context: MqttClientConnectedContext) {Log.i(TAG, onConnected())for (l in listeners) {l.onConnected()}subscribeAll()}private fun subscribeAll() {CompletableFuture.supplyAsync({val futures subTopics.map(::subscribe).map {it.thenCompose {CompletableFuture.supplyAsync({val success !it.reasonString.isPresentif (success) {Log.i(TAG, subscribe success)} else {Log.e(TAG, subscribe() - reasonCodes[${it.reasonCodes.joinToString(, )}] , reasonString${it.reasonString})}success}, executor)}}.toTypedArray()CompletableFuture.allOf(*futures).join()//等待所有订阅结果if(futures.all { it.get() }) {Log.i(TAG, subscribeAll() - 全部订阅成功)}for (l in listeners) {l.onSubscribed(*subTopics)}}, executor)}override fun onDisconnected(context: MqttClientDisconnectedContext) {Log.e(TAG, onDisconnected() - isConnected${mqttAsynClient.state.isConnected} , isConnectedOrReconnect${mqttAsynClient.state.isConnectedOrReconnect})for (l in listeners) {l.onDisconnected()}}fun connect() {mqttAsynClient.connectWith().cleanStart(true).keepAlive(30).send().thenAccept {if (it.reasonCode Mqtt5ConnAckReasonCode.SUCCESS) {Log.i(TAG, connect() - SUCCESS)} else {Log.e(TAG, connect() - ${it.reasonCode})}}}fun disconnect() {mqttAsynClient.disconnect().thenAccept {Log.i(TAG, disconnect())}}private val callback ConsumerMqtt5Publish {val topic it.topic.toString()val data it.payloadAsBytesprocessReceivedMessage(topic, data)}private fun processReceivedMessage(topic: String, data: ByteArray) {//处理接收的数据for (l in listeners) {l.onReceiveMessage(topic, data)}}fun subscribe(topic: String): CompletableFutureMqtt5SubAck {return mqttAsynClient.subscribeWith().topicFilter(topic).noLocal(true)// we do not want to receive our own message.qos(MqttQos.AT_MOST_ONCE).callback(callback).executor(executor).send()}fun unsubscribe(topic: String) {mqttAsynClient.unsubscribeWith().topicFilter(topic).send().thenAccept {Log.i(TAG, unsubscribe() - $it)}}/*** 发送数据*/fun publish(topic: String, payload: ByteArray) {mqttAsynClient.publishWith().topic(topic).qos(MqttQos.AT_MOST_ONCE).payload(payload).send().thenAccept { mqtt5PublishResult -mqtt5PublishResult.publish.let { mqtt5Publish - // val topic mqtt5Publish.topic.toString()val data mqtt5Publish.payloadAsBytesfor (l in listeners) {l.onSendMessage(topic, data)}}}}companion object {private const val TAG MqttManagerprivate const val SERVER_HOST example.comprivate const val SERVER_PORT 1883 // 1883即TCP协议host不要再加上tcp://否则连不成功private const val USERNAME adminprivate const val PASSWORD 123456val instance MqttManager()} }
http://www.sadfv.cn/news/121781/

相关文章:

  • 专题文档dede企业网站建设医院网站开发违法吗
  • 为什么原网站建设公司不愿意透露域名管理权限给客户响应式网站怎么写
  • 重庆市做网站的公司有哪些城镇建设周刊网站
  • 数据库 网站开发所需流程电商培训课程内容
  • 网站背景怎么设置wordpress 腾讯企业邮箱
  • 建筑网站的功能模块有哪些网站建设服务非常好湖南岚鸿公司
  • 婴儿辅食中企动力提供网站建设京津冀网站建设公司
  • wordpress博客站搭建站长之家seo概况查询
  • 工信部网站查询邯郸市网络建站
  • 网站建设 豫icp备怎么去跟客户谈网站建设
  • 服装行业做推广网站在大学做网站
  • 迅雷网站做爰视频游戏平台网站制作
  • 网站负责人核验现场拍摄照片自助建站好吗
  • 网站建设带有注册账号河南省住房与城乡建设厅网站
  • 斐讯k2做网站wordpress如何新建页面模板
  • 湖南建设网站官网盐城网站开发包括哪些
  • 怎样做网站首页图片变换网页直接玩的传奇
  • 苏州手机网站建设费用当建设部门网站
  • 多说评论插件对网站优化有中文网站 怎么做英文网站
  • 广州网站推广哪家好无货源如何开网店
  • 衡水网站开发报价php外贸网站源码
  • 可以做微积分的网站贵阳网站设计公司价格
  • 如何建立一个免费网站Wordpress 图片左右滑动
  • 重庆做网站做得好的公司滕州市 网站建设公司
  • 上海网站建设开发电话360网站制作
  • 行业网站制作冠县快搜网站建设有限公司
  • 毕设用别人网站做原型重庆h5网站建设模板
  • 阳山网站seo定制商品的网站建设
  • 婚纱网站策划书模板化工企业建网站
  • 徐州网站建设xzwzjs微信制作软件