
mqtt
文章平均质量分 53
1024-iot-SaltIce
熟悉Go与Java语言,目前主要使用golang,喜欢对微服务系统开发与设计,以及云原生的学习,和中间件的开发。
展开
-
SI-MQTT集群消息处理
SI-MQTT MQTT v5 Broker此si-mqtt提供了一种比较开放的集群消息处理方式:集群消息发送只开放一个方法,负责发送publish、subscribe、unsubscribe msg.// SendMsgToCluster 发送消息到集群// shareName 共享主题组// targetNode 目标节点// 这两个参数用于集群共享主题消息发送到特定的节点func SendMsgToCluster(msg messagev5.Message, shareName, t原创 2021-10-02 16:42:43 · 1055 阅读 · 0 评论 -
SI-MQTT-v5版协议报文编解码实现
MQTT 控制报文编解码实现初版,还有许多协议细节未处理,正在完善中,欢迎共同参与有错误欢迎指出修改哦connectconnackpublishpubackpubrecpubrelpubcompsubscribesubackunsubscribeunsubackpingreqpingrespdisconnectauth...原创 2021-08-19 11:19:22 · 987 阅读 · 0 评论 -
MQTT协议之剩余长度编解码算法实现
MQTT协议中,剩余长度使用的是一种变长度的编码方案,其剩余长度 = 可变报头长度 + 负载长度。所以剩余长度最少占用1个字节,最多占用4个字节。下图就是MQTT协议中总结的剩余长度不同的取值范围,对应所占用的字节数。而这些范围对应到具体数据的编解码由下面的算法来实现。下图是从MQTT协议中copy的其编码解码算法MQTT采用大端序列传输数据,想知道自己计算机是大端还是小端可以通过一个int64的数据1,左移大于32位,强转为byte,看看是0还是大于0的,是0就是大端的一个字节包含8原创 2021-08-07 09:48:29 · 1368 阅读 · 0 评论 -
GoMQTT服务器 节点路由树设计
GoMQTT服务器 节点路由树设计第一章 节点路由树设计文章目录GoMQTT服务器 节点路由树设计思路一、节点路由树设计二、代码1. 主题节点添加与删除总结思路采用节点路由树来管理mqtt消息需要发送到哪些节点上去,当该节点有消息需要转发到其他节点时,查找该表,得到需要转发的节点信息,再转发。当然,可以为了性能优化:不一定有通配符和没有通配符都采用路由树,可以通过对没有通配符的主题进行hash,来查找相应的节点,这个需要仔细考虑一下,我暂时只是有这个想法。添加节点到主题上去,采用对应的主原创 2020-09-09 18:20:04 · 1210 阅读 · 0 评论 -
GoMQTT服务器 tcp处理粘包问题
GoMQTT服务器 tcp处理粘包问题第一章 tcp处理粘包问题写的不好,请指出,目前还在学习当中文章目录GoMQTT服务器 tcp处理粘包问题前言一、问题显示1.服务器代码2.客户端代码3.问题二、分析1.为什么会出现粘包2.解决办法编解码修改服务端代码修改客户端代码服务端接收数据效果前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例原创 2020-09-04 13:45:07 · 1829 阅读 · 0 评论 -
go语言MQTT服务器(五)MQTT服务器集群
go语言MQTT服务器(五)MQTT服务器集群GOMQ服务器,写的不好,别见外一、节点间数据交互端口配置二、配置两个节点,上面的节点间数据交互端口图也要修改里面的三个参数三、MQTT.fx测试工具测试:连接配置,分别连接不同的节点四、mq消息发布,两个都订阅同一个主题,其中一个推送数据到这个主题上去,可见两个都接收到了数据五、Nginx负载均衡可通过我前几篇的Nginx配置,...原创 2020-03-18 22:55:51 · 2787 阅读 · 0 评论 -
go语言MQTT服务器(四)集群设计思考
go语言MQTT服务器(四)集群设计思考以下是我自己的想法,本人学生一枚,思考的较浅,,如有什么错误或者遗落的,望多多指导一下,谢谢。一、集群session处理当一个客户端通过nginx负载后连接到broker1时,会产生一条session,保存会话信息(相应的主题与路由表改变,这里不先谈)。当客户端断线重连时,可能会连接到其它broker,如broker2,如果断线前的那个连接没有选择清理...原创 2020-03-17 12:49:32 · 1528 阅读 · 0 评论 -
go语言的MQTT服务器(三)---- nginx负载均衡配置
go语言的MQTT服务器(三)---- nginx负载均衡配置在nginx配置文件中添加以下配置即可stream{ upstream mqtt{ server 127.0.0.1:1883; //你的mqtt服务器地址,这里只用了一个服务器 } server{ listen 18883; //nginx对外提供的端口,用于转发到mqtt服务器去的 proxy_pass m...原创 2020-03-08 18:32:27 · 1628 阅读 · 0 评论 -
go语言的MQTT服务器(二)----- 主题(1)
go语言的MQTT服务器(二)主题topic发布订阅必须要有主题,当订阅了某个主题后,才能收到这个主题的payload。MQTT通过“主题”实现将消息从发布者客户端送达至接收者客户端。“主题”是附加在消息上的一个标签,发布者客户端将“主题”和“消息”发送至代理服务器(mqtt broke),代理服务器将该消息转发至每一个订阅了该“主题”的订阅者客户端。主题通配符1 . 主题层级分隔符...原创 2020-03-08 15:56:22 · 2004 阅读 · 0 评论 -
go语言的MQTT服务器(一)
go语言的MQTT服务器这是一个通过对已经很久没有维护的项目https://github.com/zentures/surgemq进行二次开发的mqtt服务器开发初衷最初为了去了解学习mqtt,特在网上找了几个go语言的mqtt开源服务器,但是,不是运行有问题,就是协议支持不完善,好不容易找到这个,但是很久没有维护了。经过考虑,还是拿这个当做基础开发。基础功能支持支持QOS 0、1和2...原创 2020-03-07 21:44:23 · 7111 阅读 · 1 评论