Netty-Mqtt
文章平均质量分 54
基于netty实现mqtt客户端,用于java、android运行环境
猿小二
程序员之所以犯错误,不是因为不懂,而是自认为什么都懂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于Netty实现Mqtt客户端(六)-发布消息
引言万事俱备,就欠发布消息了。前面的文章中,我们已经完成mqtt的连接、心跳、订阅、取消订阅处理,剩下就只有如何发布消息了。原创 2021-11-30 14:39:26 · 5752 阅读 · 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 · 2739 阅读 · 0 评论 -
基于Netty实现Mqtt客户端(四)-心跳
引言我们在成功建立mqtt连接后,会发现客户端在经过一段时间后被服务端主动关闭连接,这是因为我们未按照mqtt协议定时发送心跳给服务器造成的。客户端需要发送PINGREQ报文给服务端,用于:在没有任何其它控制报文从客户端发给服务的时,告知服务端客户端还活着请求服务端发送响应PINGRESP确认它还活着使用网络以确认网络连接没有断开发送心跳private void startPingTask() { if (channel == null) return;原创 2021-10-13 16:42:40 · 4117 阅读 · 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 · 5971 阅读 · 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 · 5792 阅读 · 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 · 3954 阅读 · 2 评论
分享