物联网 基于netty构建mqtt服务协议支持

物联网 基于netty构建mqtt服务协议支持

核心协议

MQTT 核心协议版本 MQTT v3.1, v3.1.1, v5.0 基于 Netty 构建的项目支持相应版本

传输协议

传输协议支持 TCP (原生MQTT)(默认端口:1883)WebSocket(默认端口:8080)

  • TCP(原生 MQTT)

    标准的 MQTT 协议直接在 TCP 连接上运行,这是最常用、最高效的方式,
    适用于大部分物联网设备和服务端通信
    默认端口: 1883

  • WebSocket

    将 MQTT 消息封装在 WebSocket 帧中传输,
    使得浏览器里的 JavaScript 应用能够通过 WebSocket 连接 MQTT 服务器,
    同时也便于穿过只允许 HTTP/HTTPS 的企业防火墙
    默认端口: 8080(ws)或 8443(wss,加密版)

安全协议

SSL/TLS (MQTT over TLS)(默认端口:8883) WSS (MQTT over WSS)

复制代码
┌─────────────────────────────────────────────────┐
│                  MQTT 协议层                     │
└───────────────┬─────────────────┬───────────────┘
                │                 │
        ┌───────▼───────┐ ┌───────▼───────┐
        │   TCP 传输    │ │ WebSocket传输 │   ← 传输协议(决定数据如何打包)
        └───────┬───────┘ └───────┬───────┘
                │                 │
        ┌───────▼───────┐ ┌───────▼───────┐
        │    TLS加密    │ │    TLS加密    │   ← 安全层(可选,叠加后成为加密版本)
        └───────┬───────┘ └───────┬───────┘
                │                 │
          MQTT over TLS       MQTT over WSS
            (端口 8883)         (端口 443/8443)

WSS 不是独立协议

它就是 WebSocket + TLS 的标准缩写

复制代码
"全协议支持" 意味着 Broker 能同时以上四种组合(TCP、WS、TLS、WSS),
Netty 通过灵活编排 ChannelPipeline 就能实现

配置 Netty 的 MQTT 服务

只需要在 pipeline 中按顺序

复制代码
明文版:MqttDecoder + MqttEncoder
TLS 版:SslHandler + MqttDecoder + MqttEncoder
WebSocket 版:WebSocketServerProtocolHandler + MqttDecoder + MqttEncoder
WSS 版:SslHandler + WebSocketServerProtocolHandler + MqttDecoder + MqttEncoder
相关推荐
wuyk5558 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 33 章 Wireshark 无线抓包环境搭建、802.11 帧过滤规则
物联网·测试工具·wireshark
代码什么用9 小时前
Spring基础使用
java·后端·spring
Su米苏10 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
码云数智-园园10 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁10 小时前
Java 异常体系详解:从字节码原理到最佳实践
java
蜗牛互联网10 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西11 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨11 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
小卡车55511 小时前
java反射、自定义注解的应用(自定义分页)
java
BLUcoding12 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom