Netty-Mqtt
文章平均质量分 54
基于netty实现mqtt客户端,用于java、android运行环境
猿小二
程序员之所以犯错误,不是因为不懂,而是自认为什么都懂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于Netty实现Mqtt客户端(六)-发布消息
引言 万事俱备,就欠发布消息了。前面的文章中,我们已经完成mqtt的连接、心跳、订阅、取消订阅处理,剩下就只有如何发布消息了。原创 2021-11-30 14:39:26 · 5787 阅读 · 0 评论 -
基于Netty实现Mqtt客户端(五)-订阅/取消订阅
引言 我们在完成连接相关实现后,就可以接收其他客户端发送的消息了。客户端之间的消息通讯通过以下方式实现: 客户端A向服务端订阅主题T; 客户端B向服务端发送消息,并指定该消息是发给主题T的; 服务端查看谁订阅了主题T,转发该消息给所有订阅主题T的客户端。 订阅主题 /** * 订阅主题 * * @param qos 0-至多发1次 * 1-至少送达1次 * 2-完全送达并回应 * @param topics 主题集 * @thr原创 2021-11-30 13:08:18 · 2784 阅读 · 0 评论 -
基于Netty实现Mqtt客户端(四)-心跳
引言 我们在成功建立mqtt连接后,会发现客户端在经过一段时间后被服务端主动关闭连接,这是因为我们未按照mqtt协议定时发送心跳给服务器造成的。 客户端需要发送PINGREQ报文给服务端,用于: 在没有任何其它控制报文从客户端发给服务的时,告知服务端客户端还活着 请求服务端发送响应PINGRESP确认它还活着 使用网络以确认网络连接没有断开 发送心跳 private void startPingTask() { if (channel == null) return;原创 2021-10-13 16:42:40 · 4167 阅读 · 0 评论 -
基于Netty实现Mqtt客户端(三)-创建连接
如何创建mqtt连接 要建立一个mqtt连接,分两个步骤: 创建socket长连接 发送连接报文(mqtt协议) 创建长连接 private void doConnect(MqttConnectOptions options, long timeout) throws Exception { // 创建连接 EventLoopGroup group = new NioEventLoopGroup(); connectTask = new AsyncTask<String>() {原创 2021-10-11 10:01:56 · 6046 阅读 · 0 评论 -
基于Netty实现Mqtt客户端(二)-使用netty-mqtt-client
netty-mqtt-client 关于 基于netty实现的mqtt客户端,可用于Java、Android环境。持续开发中,现已完成基本框架及功能,目前仅支持qos1级别通讯,后期根据需要再开发qos2、qos3级别。 如何使用 Gradle: repositories { mavenCentral() } dependencies { implementation 'io.github.x2ge:netty-mqtt-client:2.0.2' } 连接 MqttClient mqt原创 2021-09-27 10:31:45 · 5861 阅读 · 0 评论 -
基于Netty实现Mqtt客户端(一)-环境搭建
前言 在Android开发中,之前一直使用org.eclipse.paho.client.mqttv3包来开发mqtt客户端,随之就遇到了线程不回收的难搞问题,还伴随其他一些莫名其妙的问题。事实教育我,mqttv3虽然用的人多,却并不稳定。后面无意中发现了Netty框架,一个实现了大量网络协议的框架,于是就基于Netty实现了mqtt客户端。 环境搭建 要开发一个mqtt客户端,我们首先就需要搭建一个完整的mqtt通讯环境。 服务器:EMQX 下载windows压缩包并解压: https://www.emq原创 2021-09-26 10:06:39 · 4009 阅读 · 2 评论
分享