当前位置: 首页 > backend >正文

EMQX 作为 MQTT Broker,支持 ​MQTT over TCP​ 和 ​MQTT over WebSocket​ 两种协议

1. EMQX 支持的协议与端口

协议类型默认端口用途说明
MQTT over TCP1883标准的 MQTT 协议,基于 TCP 传输(用于后端服务、物联网设备等)。
MQTT over TLS8883加密的 MQTT over TCP(TLS/SSL 加密,安全性更高)。
MQTT over WS8083基于 WebSocket 的 MQTT(用于浏览器、Web 前端等需要跨域的场景)。
MQTT over WSS8084加密的 MQTT over WebSocket(TLS/SSL 加密)。
关键点
  • MQTT over TCP​:直接通过 TCP 传输 MQTT 数据包(高性能,适合后端服务)。
  • MQTT over WebSocket​:将 MQTT 数据包封装在 WebSocket 帧中传输(兼容浏览器,适合 Web 应用)。
  • 交互本质​:无论使用哪种协议,EMQX 都会将消息统一处理。例如:
    • 一个 TCP 客户端发布消息到主题 sensor/data,WebSocket 客户端订阅同一主题时也能收到消息。
    • 协议对客户端透明,仅影响连接方式,不影响消息路由逻辑。

2. 在 EMQX 管理后台区分不同协议

在 EMQX Dashboard 中,可以通过以下方式区分不同协议的客户端:

​(1) 查看监听器(Listeners)​
  1. 进入 EMQX Dashboard(默认地址 http://<EMQX-IP>:18083)。

  2. 导航到 ​Management → Listeners
    https://static.emqx.net/images/emqx-listener-config.png

  3. 查看已启用的监听器:

    • TCP 监听器​:端口 1883(默认名称 mqtt:tcp:internal)。
    • WebSocket 监听器​:端口 8083(默认名称 mqtt:ws:internal)。
    • 如果启用了 TLS,会显示 8883(TCP TLS)和 8084(WebSocket TLS)。
​(2) 客户端连接信息
  1. 进入 ​Clients​ 页面,查看已连接的客户端。
  2. 在客户端详情中,​Transport​ 字段会显示协议类型:
    • TCP:表示通过 TCP 连接。
    • WS:表示通过 WebSocket 连接。
    • WSS:表示通过加密的 WebSocket 连接。

3. 你的配置与 EMQX 的对应关系

根据你的配置文件:

yaml

mqtt:BASIC:  # MQTT over TCPprotocol: MQTThost: 10.10.206.48port: 1883  # EMQX 的 TCP 监听端口DRC:    # MQTT over WebSocketprotocol: WShost: 10.10.206.48port: 8083  # EMQX 的 WebSocket 监听端口path: /mqtt # WebSocket 路径
验证配置是否生效
  1. 检查 EMQX 监听器​:

    • 确认 18838083 端口的监听器已启用(通过 Dashboard 的 ​Listeners​ 页面)。
    • 如果未启用,需在 EMQX 配置文件 emqx.conf 中添加:
      listeners.tcp.default.bind = 1883
      listeners.ws.default.bind = 8083
      listeners.ws.default.path = /mqtt
  2. 测试客户端连接​:

    • 使用 BASIC 配置的客户端(TCP)连接到 1883 端口。
    • 使用 DRC 配置的客户端(WebSocket)连接到 8083 端口,路径为 /mqtt

4. 注意事项

  1. 端口冲突​:

    • 确保 EMQX 的 TCP 和 WebSocket 端口未被防火墙拦截。
    • 如果端口未开放,客户端会连接失败。
  2. 路径(Path)​​:

    • WebSocket 连接的 path 必须与 EMQX 监听器的配置一致(例如 /mqtt)。
    • 如果路径不匹配,WebSocket 握手会失败。
  3. 安全性​:

    • 生产环境建议使用 TLS 加密(端口 88838084)。
    • 在 Dashboard 的 ​Listeners​ 页面可配置 TLS 证书。

总结

  • EMQX 同时支持 MQTT over TCP 和 WebSocket,通过不同端口和协议类型区分。
  • 交互逻辑统一​:无论客户端使用哪种协议,消息路由和主题订阅/发布的行为一致。
  • 在 Dashboard 中​:通过监听器状态和客户端详情即可区分协议类型。
http://www.xdnf.cn/news/4784.html

相关文章:

  • 数据分析平台选型与最佳实践:如何打造高效、灵活的数据生态?
  • 编译原理头歌实验:词法分析程序设计与实现(C语言版)
  • 人工智能的自动驾驶新纪元:端到端智能系统挑战与前沿探索方案
  • Java 17配置Jenkins
  • robot_lab中rsl_rl的replay_amp_data.py简洁解析
  • 支持鸿蒙next的uts插件
  • 线代第二章矩阵第五、六、七节矩阵的转置、方阵的行列式、方阵的伴随矩阵
  • Android开发报错解决
  • mysql 复习
  • Webug4.0靶场通关笔记22- 第27关文件包含
  • 用递归实现各种排列
  • 使用Jmeter进行核心API压力测试
  • 如何进行APP安全加固
  • 计算机视觉与深度学习 | 基于Transformer的低照度图像增强技术
  • 用react实现一个简单的三页应用
  • nut-form表单:实现动态新增、校验
  • android ViewModel liveData无法监听之多线程下activityViewModels不安全
  • ISP gamma校正简介
  • 如何对外包团队进行有效的管理?
  • JAVA房屋租售管理系统房屋出租出售平台房屋销售房屋租赁房屋交易信息管理源码
  • 总线通信篇:I2C、SPI、CAN 的底层结构与多机通信设计
  • Python核心数据结构深度对比:列表、字典、元组与集合的异同与应用场景
  • 浏览器刷新结束页面事件,调结束事件的接口(vue)
  • 谷歌 Gemma 大模型安装步骤
  • oracle goldengate非并行进程转换为并行进程
  • Python3正则表达式:字符串魔法师的指南[特殊字符]‍♂️
  • 【C语言】--指针超详解(二)
  • 非对称加密:为什么RSA让“公开传密”成为可能
  • 计算机科技笔记: 容错计算机设计01 概述 教材书籍 课程安排 发展历史
  • Python连接云端服务器:基于Paramiko库的实践与问题剖析