鸿蒙OS开发实战:【ArkTS 实现MQTT协议(2)】

 

 软件说明

  1. 协议传输通道仅为TCPSocket
  2. 基于HarmonyOS SDK API 9开发
  3. 开发语言:ArkTS,TypeScript

应用操作说明

测试首页

  1. “连接” : 用于连接远端服务器。具备“连接 & 断开” 两个功能
  2. “设置” : 用于添加更多主题
  3. “订阅” & “解除” : 仅用于默认主题“Harvey2024”
  4. “发布” : 发布消息前,用来设置消息QoS 和 主题
  5. “发送” : 发布已输入的文字

Screenshot_20240109232139981.png

主题设置页

  1. “+” : 添加主题

image.png

2.  主题列表,长按可删除主题

image.png

运行中的首页

image.png

接口使用说明

学习前准备:

开始前熟悉鸿蒙文档

鸿蒙OS开发更多内容↓点击HarmonyOSOpenHarmony技术
鸿蒙技术文档《鸿蒙NEXT星河版开发学习文档》

搜狗高速浏览器截图20240326151547.png

连接

//构建MQTT CONNECT参数
let CMD = MQTTConnect.create()
  .setClientIdentifier('Harvey鸿蒙') //客户端名字
  .buildPacket()

//配置Socket并且完成连接
HarmonyOSSocket.get()
  .socketCfg({
    address: {
      address: this.sec1IP + "." + this.sec2IP + "." + this.sec3IP + "." + this.sec4IP,
      port: 1883
    }
  },
  )
  .connectCfg(CMD)
  .connect()

订阅主题

let options: SubscribeTopicNameOptions[] = [
  { topicName: this.currentPublishTopicName} //主题名称
]

HarmonyOSSocket.get().subscribeTopic(options)

发布消息

//构建MQTT PUBLISH参数
let publishConfig = MQTTPublish.create()
  .setQoS(this.currentPublishQoS) 
  .setTopicName(this.currentPublishTopicName)

HarmonyOSSocket.get()
               .publishCfg(publishConfig)
               .sendMessageByString(this.inputMessage)

消息监听

//错误信息
getContext().eventHub.on(MQTTCommon.EVENTHUB_MQTT_APP_ERROR_MSG, (value) => {
  this.errorMessage = value
})

//
getContext().eventHub.on(MQTTCommon.EVENTHUB_MQTT_CMD_STATUS_MSG, (msg) => {
  if (msg.action === 'connect') { //MQTT CONNECT结果消息
    if (msg.value == 0) {
       //成功
    } else {
      Prompt.showToast({ message: '连接失败' })
    }

  } else if (msg.action === 'close') {
    //1. TCPSocket 关闭事件
    //2. MQTT 断开命令已发送完毕

  } else if (msg.action == 'subscribeack') {

    //订阅主题结果 
    let packet = msg.value as MQTTPacketStruct

  } else if (msg.action == 'unsubscribeack') {

    //解除主题订阅结果 
    let packet = msg.value as MQTTPacketStruct

  } else if (msg.action == 'publish-s-to-c') {

    //收到服务端数据包,即 接收到消息
    let packet = msg.value as MQTTPacketStruct

  } else if (msg.action == 'publish-c-to-s') {

    //客户端发送给服务端数据包
    let packet = msg.value as MQTTPacketStruct

  }
})

断开服务

HarmonyOSSocket.get().disconnect()

最后呢,很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

高清完整版请点击→《鸿蒙NEXT星河版开发学习文档》

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细资料鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。

《鸿蒙 (OpenHarmony)开发学习视频》

图片

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

获取这份鸿蒙星河版学习资料,请点击→《鸿蒙NEXT星河版开发学习文档》

OpenHarmony北向、南向开发环境搭建

图片

《鸿蒙开发基础》

  1. ArkTS语言

  2. 安装DevEco Studio

  3. 运用你的第一个ArkTS应用

  4. ArkUI声明式UI开发

  5. .……

图片

《鸿蒙开发进阶》

  1. Stage模型入门

  2. 网络管理

  3. 数据管理

  4. 电话服务

  5. 分布式应用开发

  6. 通知与窗口管理

  7. 多媒体技术

  8. 安全技能

  9. 任务管理

  10. WebGL

  11. 国际化开发

  12. 应用测试

  13. DFX面向未来设计

  14. 鸿蒙系统移植和裁剪定制

  15. ……

图片

《鸿蒙开发实战》

  1. ArkTS实践

  2. UIAbility应用

  3. 网络案例

  4. ……

图片

 获取这份鸿蒙星河版学习资料,请点击→《鸿蒙NEXT星河版开发学习文档》

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/507132.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM:函数调用(Function Calling)

1 函数调用 虽然大模型能解决很多问题,但大模型并不能知晓一切。比如,大模型不知道最新消息(GPT-3.5 的知识截至 2021年9月,GPT-4 是 2023 年12月)。另外,大模型没有“真逻辑”。它表现出的逻辑、推理,是训练文本的统计…

第九节:时间队列(终结篇)

一、概述 在常规的时间管理中是时间到了触发某个任务,这样一个时间点对应一个任务。在特殊的场景下,任务不断放送到时间队列,时间一到,全部任务执行并释放。如图: 二、时间队列组件 SMB提供了TimeFragment组件来构建…

Domino中的Web博客还能这么用

大家好,才是真的好。 最近时间比较空余(闲得慌),计划做一个网站出来。虽然网站很不流行,但对80后程序员来说,毕竟容易实现和感觉亲切。 在Domino平台上做一个网站实在是太容易了,但除了手动开…

【Linux】IP协议

目录 IP报头格式 网段划分 特殊的IP地址 IP地址的数量限制 私有IP地址和公网IP地址 路由 IP报文分片 1.粗粒度谈谈分片 a. 确保将所有的分片全部聚到一起(相同的标识) b. 片偏移排序(完成组转) 2.分片细节 数据链路层 M…

http模块 服务器端如何响应(获取)静态资源?

一、静态资源与动态资源介绍: (1)静态资源 内容长时间不改变的资源。eg:图片、视频、css js html文件、字体文件... (2)动态资源 内容经常更新的资源。eg:百度首页、淘宝搜索列表... 二、服…

引领向量数据库技术新变革,Milvus 2.4 正式上线

备受关注的 Milvus 2.4 正式上线! 作为向量数据库赛道的领军者,Zilliz 一直致力于推动向量技术的进步与创新。本次发布中,Milvus 新增支持基于 NVIDIA 的 GPU 索引—— CUDA 加速图形索引(CAGRA),突破了现有向量搜索的能力。 GPU 索引是向量数据库技术中的重要里程碑,…

【码银送书第十六期】大模型在金融行业的应用场景和落地路径

作者:林建明 来源:IT阅读排行榜 本文摘编自《AIGC重塑金融:AI大模型驱动的金融变革与实践》,机械工业出版社出版 文章转自:大模型在金融行业的应用场景和落地路径 这是最好的时代,也是最坏的时代。尽管…

Linux系统使用Docker部署个人IT工具箱IT-Tools结合内网穿透实现公网访问

作为程序员,在日常工作中,需要借助一些工具来提高我们工作效率,IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能,使开发者能以更高效方式完成任务。经由IT-Tools,开发人员能轻松应对各类技术挑战&…

【随笔】Git -- 高级命令(上篇)(六)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

CVPR 2024 | 风格迁移和人像生成汇总!扩散模型diffusion用于经典AIGC方向

风格迁移 1、DEADiff: An Efficient Stylization Diffusion Model with Disentangled Representations 基于文本到图像扩散模型在迁移参考风格方面具有巨大潜力。然而,当前基于编码器的方法在迁移风格时显著损害了文本到图像模型的文本可控性。本文提出DEADiff来解决…

解决win10 cmd下运行python弹出windows应用商店

Windows 10 的五月更新为 Microsoft Store 应用商店带来了 Python 3.7 原因是这个环境变量“C:\Users\hongc\AppData\Local\Microsoft\WindowsApps”的优先级比我们创建的python环境变量优先级高 所以我们只需要删除这个环境变量即可 但是为了不影响正常功能 推荐将Python的…

【机器学习】数据探索---python主要的探索函数

在上一篇博客【机器学习】数据探索(Data Exploration)—数据质量和数据特征分析中,我们深入探讨了数据预处理的重要性,并介绍了诸如插值、数据归一化和主成分分析等关键技术。这些方法有助于我们清理数据中的噪声、消除异常值,以及降低数据的…

每日一题(相交链表 )

欢迎大家来我们主页进行指导 LaNzikinh-CSDN博客 160. 相交链表 - 力扣(LeetCode) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节…

【蓝桥杯第十三届省赛B组】(详解)

九进制转十进制 #include <iostream> #include<math.h> using namespace std; int main() {cout << 2*pow(9,3)0*pow(9,2)2*pow(9,1)2*pow(9,0) << endl;return 0; }顺子日期 #include <iostream> using namespace std; int main() {// 请在此…

20-日志处理(上):如何设计日志包并记录日志?

通过记录日志&#xff0c;可以完成一些基本功能&#xff0c;比如开发、测试期间的Debug&#xff0c;故障排除&#xff0c;数据分析&#xff0c;监控告警&#xff0c;以及记录发生的事件等。 如何设计日志包 基础功能 基础功能&#xff0c;是优秀日志包必备的功能&#xff0c;能…

勒石燕然的窦宪,打得匈奴只得为害欧洲了

匈奴&#xff0c;一个与汉族争斗了数百年的民族&#xff0c;在大大小小上百场战役中&#xff0c;双方一直打得你来我往。在东汉&#xff0c;一个罪臣指挥了汉民族与匈奴的终局之战。更令人想不到的是&#xff0c;终局之战北匈奴的战败却整得离中国相距甚远的欧洲崩溃了。 窦家…

ARP类型

地址解析协议ARP即可实现将IP地址解析为MAC地址 动态ARP 动态ARP表项由ARP协议通过ARP报文自动生成和维护&#xff0c;可以被老化&#xff0c;可以被新的ARP报文更新&#xff0c;也可以被静态ARP表项覆盖。 动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。 静态ARP …

单元测试mockito(一)

1.单元测试 1.1 单元测试的特点 ●配合断言使用(杜绝System.out) ●可重复执行 。不依赖环境 ●不会对数据产生影响 ●spring的上下文环境不是必须的 ●一般都需要配合mock类框架来实现 1.2 mock类框架使用场景 要进行测试的方法存在外部依赖(如db,redis,第三方接口调用等),为…

Linux系统Docker如何部署Nextcloud结合内网穿透实现公网访问本地资源?

文章目录 1. 安装Docker2. 使用Docker拉取Nextcloud镜像3. 创建并启动Nextcloud容器4. 本地连接测试5. 公网远程访问本地Nextcloud容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署Nextcl…

从vrrp、bfd、keepalived到openflow多控制器--理论篇

vrrp 在一个网络中&#xff0c;通常会使用vrrp技术来实现网关的高可用。 vrrp&#xff0c;即Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议。 应用场景 典型的如下面这个例子&#xff1a; 当Router故障后&#xff0c;将会导致HostA-C都无法连接外部的I…