物联网 基于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
