支付宝小程序使用mqtt over websocket 方式连接EMQX时候一直联系不上。

支付宝小程序连接 EMQX时候使用的是 mqtt over websocket 直接可以使用内置的函数

支付宝小程序连接 mqtt over websocket 的时候头部一定带上: Sec-WebSocket-Protocol : 'mqtt' 

下面是官方文档说明如下:https://opendocs.alipay.com/mini/api/vx19c3

常见问题

Q:my.connectSocket 是否支持 mqtt 协议

A:

my.connectSocket 支持 mqtt 协议,但是需要注意的是,若为 mqtt 协议,则需要注意在 header 参数里,加上 「 Sec-WebSocket-Protocol : 'mqtt' 」
参考代码:

my.connectSocket({
  url: 'wss://hbhftgf.site/ws/', // 此 url 仅为示例,开发者可替换为自己的 URL
  //mqtt 协议服务需要加上这个header
  header : {
   "Sec-WebSocket-Protocol" : "mqtt"
   },
  success: (res) => {
    console.log("创建 socket 连接成功" + JSON.stringify(res));
  },
  fail: (error) => {
    my.alert({ content: '创建连接失败:' + JSON.stringify(error) });
  },
});


nginx配置如下:

map $http_upgrade $connection_upgrade {

    default Upgrade;

    ''      close;

      }




location /mqtt {

            proxy_pass http://127.0.0.1:8083/mqtt;

            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;

            proxy_set_header Connection $connection_upgrade;

            proxy_set_header Host $http_host;

            proxy_connect_timeout 60; #配置规避webSocket连接中断

            proxy_read_timeout 600; #配置规避webSocket连接中断

            proxy_send_timeout 600;#配置规避webSocket连接中断

            ##支付宝小程序一定需要下面的头部信息:Sec-WebSocket-Protocol

            #可以my.connectSocket函数在程序连接的时候指定 这个头部信息

            #nginx里面添加是全局的  

            #proxy_set_header Sec-WebSocket-Protocol  'mqtt';  


    }


请先 登录 后评论
  • 0 关注
  • 0 收藏,41 浏览
  • 石天 提出于 2025-11-27 11:24

相似问题