javamqtt开源服务端_【开源】MQTT推送服务器——
zer0MqttServer(J。。。
⽬录
重要的放前⾯:V1.0版本是⼀个⾮常基础的版本,除了完整的MQTT协议实现外,其他功能什么都没做。
MQTT 协议是 IBM 开发的即时通讯协议,相对于 IM 的实际上的准标准协议 XMPP 来说,MQTT 更⼩,更快,更轻量。MQTT 适合于任何计算能⼒有限,⼯作在低带宽、不可靠的⽹络中的设备,包括⼿机,传感器等等。
开发此客户端的⽬的,是因为实际项⽬中需要⽤到推送、即时通讯的内容,⽽第三⽅平台有时候不稳定,遇到问题难于调试。所以决定⾃⼰开发⼀套即时通讯系统。选⽤ MQTT 的原因正如上所说,它⽐XMPP更适合⼿机端使⽤。具体⽐较请参看:Android推送⽅案分析(MQTT/XMPP/GCM)。
项⽬断断续续写了快⼀年(2015年2⽉~12⽉),⼤部分在业余时间完成。代码中的每个函数都有明确的中⽂注释信息,对于 MQTT 实现的部分,更是细节到每个功能对应的⽂档的页数都进⾏了标明。此服务器既可以针对具体项⽬⼆次开发使⽤,也可以⽤于 MQTT 协议的学习。
已实现:
⽹络传输功能(使⽤ Java7 才开始⽀持的 AIO 实现)~~
会话管理功能
任务调度框架(使⽤Quartz框架为基础封装)
协议层与⽹络层的分离(即换套协议,⽹络层⼀点不⽤改,也能⽤)
MQTT完整实现(推送,单聊,聊)
未实现:
安全层(消息加密、解密、防重放,防中间⼈等等)
好友功能(添加好友,删除好友,好友列表等等)
组管理功能(添加组,退出组等等)
开源mqtt服务器语⾳
视频
总之就是可以拓展的应⽤层都没做
所有还没做的都是我之后想要升级的
zer0MqttServer 的使⽤很简单:
下载源码(源码中包括所有依赖包)
检查 Java 版本是否为1.7或以上,不是则按照 Java 1.7及以上
导⼊IDE
引⽤依赖包
运⾏包 com.syxy.server 下的 StartServer ⽂件,即可启动服务器。
测试⽅法也同样简单:
运⾏包 test 下的 MQTTClientTest ⽂件,即可开启测试客户端。
测试客户端包括的功能有:连接服务器、订阅主题、发送固定信息,客户端通过 pahoMqtt 第三⽅jar包编写,你可以⾃⾏修改代码进⾏更详细的测试
下⾯简述⼀下项⽬的⽬录结构:
com.syxy.util 包中是⼀些公共类,包括缓冲池BufferPool、任务调度框架QuartzManager、字符串处理类StringTool、⽇期时间类TimeUtils等等
com.syxy.Aiohandler 是 AIO 的具体实现,包含了 IO 建⽴、数据接收、数据回写3个类。
com.syxy.server 是⽹络应⽤层,StartServer ⽤于启动服务器,并初始化协议相关的类。TcpServer 初始化了服务器的初始资源,包括缓冲区⼤⼩,协议处理器,端⼝配置,AIO 等等。ClientSession 是会话管理类,每个客户端的连接对应⼀个此类对象,包含⼼跳处理,会话断开,数据接收,处理,回写等等内容。
com.syxy.protocol 定义了协议处理接⼝
com.syxy.protocol.mqttImp 则是具体的 MQTT 协议的处理。包括协议的编码,解码,业务处理等等。其中的 message 包中处理了14种 MQTT 对应的消息类型(编码、解码)。process 包中进⾏了协议的具体处理。最重要的是ProtocolProcess.java⽂件,其中完整实现了MQTT协议⽂件中的具体流程。
resource ⽂件中包含了⼀些配置⽂件,其中 mqtt.properties ⽂件可以针对缓冲区⼤⼩、临时存储⽂件名、服务器端⼝等信息
在github中选择分⽀ release-V1.0 即可。主⼲会持续开发,不能保证可以跑通。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。