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

[复制链接]
发表于 2025-5-10 18:03:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. EMQX 支持的协议与端口

协议类型默认端口用途说明​MQTT over TCP​1883标准的 MQTT 协议,基于 TCP 传输(用于后端服务、物联网物联网设备等)。​MQTT over TLS​8883加密的 MQTT over TCP(TLS/SSL 加密安全性更高)。​MQTT over WS​8083基于 WebSocket 的 MQTT(用于浏览器、Web 前端等需要跨域的场景)。​MQTT over WSS​8084加密的 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)​


  • 进入 EMQX Dashboard(默认地址 http://<EMQX-IP>:18083)。
  • 导航到 ​Management → Listeners
    https://static.emqx.net/images/emqx-listener-config.png
  • 查看已启用的监听器:

    • TCP 监听器​:端口 1883(默认名称 mqtt:tcp:internal)。
    • WebSocket 监听器​:端口 8083(默认名称 mqtt:ws:internal)。
    • 如果启用了 TLS,会显示 8883(TCP TLS)和 8084(WebSocket TLS)。

​(2) 客户端毗连信息


  • 进入 ​Clients​ 页面,查看已毗连的客户端。
  • 在客户端详情中,​Transport​ 字段会显示协议类型:

    • TCP:表示通过 TCP 毗连。
    • WS:表示通过 WebSocket 毗连。
    • WSS:表示通过加密的 WebSocket 毗连。


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

根据你的设置文件:
yaml
  1. mqtt:
  2.   BASIC:  # MQTT over TCP
  3.     protocol: MQTT
  4.     host: 10.10.206.48
  5.     port: 1883  # EMQX 的 TCP 监听端口
  6.   DRC:    # MQTT over WebSocket
  7.     protocol: WS
  8.     host: 10.10.206.48
  9.     port: 8083  # EMQX 的 WebSocket 监听端口
  10.     path: /mqtt # WebSocket 路径
复制代码
验证设置是否生效


  • 检查 EMQX 监听器​:

    • 确认 1883 和 8083 端口的监听器已启用(通过 Dashboard 的 ​Listeners​ 页面)。
    • 如果未启用,需在 EMQX 设置文件 emqx.conf 中添加:
      1. listeners.tcp.default.bind = 1883
      2. listeners.ws.default.bind = 8083
      3. listeners.ws.default.path = /mqtt
      复制代码

  • 测试客户端毗连​:

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


4. 注意事项


  • 端口辩论​:

    • 确保 EMQX 的 TCP 和 WebSocket 端口未被防火墙拦截。
    • 如果端口未开放,客户端会毗连失败。

  • 路径(Path)​​:

    • WebSocket 毗连的 path 必须与 EMQX 监听器的设置一致(比方 /mqtt)。
    • 如果路径不匹配,WebSocket 握手会失败。

  • 安全​:

    • 生产情况建议使用 TLS 加密(端口 8883 或 8084)。
    • 在 Dashboard 的 ​Listeners​ 页面可设置 TLS 证书。


总结



  • EMQX 同时支持 MQTT over TCP 和 WebSocket,通过差别端口和协议类型区分。
  • 交互逻辑同一​:无论客户端使用哪种协议,消息路由和主题订阅/发布的举动一致。
  • 在 Dashboard 中​:通过监听器状态和客户端详情即可区分协议类型。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表