收藏
回答

小程序使用mqtt连接WebSocket调试工具可以正常连接,真机不行

框架类型 问题类型 操作系统版本 手机型号 微信版本
小程序 Bug iOS12 iPhone 8 plus 7.0.3

- 当前 Bug 的表现(可附上截图)

开发工具log


真机log



- 预期表现


- 复现路径


- 提供一个最简复现 Demo


最后一次编辑于  2019-03-11
回答关注问题邀请回答
收藏

8 个回答

  • Mars
    Mars
    2019-07-09

    mqtt.js 3.0.0版本,对微信小程序的支持有问题,首先看一下mqtt协议:



    在微信开发者工具上是可以看到,请求头包含子协议,此时连接正常:



    但是到了真机上,通过“真机调试模式”会发现缺少这个请求头,无法连接。


    解决方案有两种:

    1. 第一种,通过nginx反向代理:proxy_set_header Sec-WebSocket-Protocol mqtt;

    2. 第二种,将mqtt.js版本降低到 2.18.8。


    连接mqtt的端口可以任意,8044端口都可以用。并非其它回答说的一定要443端口,毫无依据。


    折腾一天,尝试各种方法。如果回答对你有用,可以请我喝杯咖啡,哈哈 😄

    2019-07-09
    有用 3
    回复 3
    • 叶儿🍂
      叶儿🍂
      03-09
      mqtt.js 2.18.8 有下载的地址吗?
      03-09
      回复
    • LLLLL
      LLLLL
      03-12
      nginx反向代理了还是不行啊,在H5都可以,在小程序调试的时候就一直报VM528 WAService.js:1 Uncaught TypeError: s is not a constructor这个错误
      03-12
      回复
    • 无名氏
      无名氏
      05-30
      你好,我试着用了下低版本的2.18.8的mqtt版本,在真机调试的时候,确实有了那个请求头(图1),但是,调试窗口却一直出错(图2)


      接着我又用回了高版本的mqtt,真机调试的时候,就没有那个请求头了(图3),但是却不报错了(图4)


      最后,上传体验版本,不管高版本还是低版本,两个体验版都连接不上服务器,消息都发不出去,也都接收不到消息
      05-30
      回复
  • 小亦
    小亦
    06-23

    按前面大佬说的, 我用最新的mqtt.js 手机上就好了(https://unpkg.com/mqtt@4.1.0/dist/mqtt.min.js

    06-23
    有用 2
    回复 3
    • 杨晓波
      杨晓波
      06-24
      这个有用!更新了就好了。
      06-24
      回复
    • 树上有云
      树上有云
      06-30
      确实有用!
      06-30
      回复
    • 盼盼
      盼盼
      09-01
      谢谢大佬,这个真的有用!
      09-01
      回复
  • 胡广宇
    胡广宇
    10-11

    笑死人了,这是微信小程序安卓真机解释器的Bug啊,它把host+port作为Host,能发出有效访问请求才怪。开发工具跟iOS真机解释器就没有这个问题,所以都能正确访问。

    10-11
    有用
    回复
  • 蘇子水良🇨🇳
    蘇子水良🇨🇳
    01-16

    调试工具可以正常连接,真机不行

    我之前也遇到过,我的解决方法是 在真机上把 “打开调试” 开关打开,就可以了;


    01-16
    有用
    回复 3
    • 十二
      十二
      04-02
      我也是的,请问最后是怎么解决的?
      04-02
      回复
    • 梦太乱。
      梦太乱。
      05-14回复十二
      请问你在真机上连接成功了吗?怎么解决的?
      05-14
      回复
    • 蘇子水良🇨🇳
      蘇子水良🇨🇳
      05-23回复十二
      方法1、在扫描二维码之后,真机调试中,勾选不校验合法域名..
      方法2、正确配置服务器域名以及证书,,,不勾选合法域名也能连接
      05-23
      回复
  • 半顆心脏
    半顆心脏
    2019-09-10

    我一直用这个:https://github.com/xuhongv/WeChatMiniEsp8266 (【新增支持阿里云物联网连接】实现微信小程序连接mqtt服务器,可控制esp8266智能硬件等需求。)

    案列有:https://github.com/xuhongv/WCMiniColorSetForEsp8266

    我建议大家先用阿里云物联网平台mqtt连接!

    2019-09-10
    有用
    回复 10
    • 高飞依旧
      高飞依旧
      2019-10-03
      你好,看过您的视频博客和github, 请问小程序后台socket合法域名是不是要配置:wss://pk.iot-as-mqtt.cn-shanghai.aliyuncs.com:443  ? 还是必须用productkey的域名?
      2019-10-03
      回复
    • 半顆心脏
      半顆心脏
      2019-10-06回复高飞依旧
      要用完整的,就是你 微信小程序访问的那个域名
      2019-10-06
      回复
    • 丶Eliauk
      丶Eliauk
      2019-11-08回复半顆心脏
      你好,我是使用ip连接的,请问怎么配置
      2019-11-08
      回复
    • 半顆心脏
      半顆心脏
      2019-11-09回复丶Eliauk
      不要用ip连接。上架或者真机调试可能连接失败!如果你没mqtt服务器搭建基础,你用百度天工mqtt或者阿里云物联网服务器连接;
      2019-11-09
      回复
    • 丶Eliauk
      丶Eliauk
      2019-11-09回复半顆心脏
      好滴,谢谢,可能就是用IP连接的问题
      2019-11-09
      回复
    查看更多(5)
  • cmy,
    cmy,
    2019-08-19

    最近在弄小程序 MQTT类的东西,  可以加下微信或者 QQ 交流一下吗

    2019-08-19
    有用
    回复 1
    • Aoki
      Aoki
      2019-09-23
      QQ1005735462希望交流一下
      2019-09-23
      回复
  • Sanker
    Sanker
    2019-07-31

    我还是不能解决,麻烦可以加一下微信聊一下吗 K402216

    2019-07-31
    有用
    回复 1
    • cmy,
      cmy,
      2019-08-19
      请问你解决了?
      2019-08-19
      回复
  • Likun
    Likun
    2019-03-12

    微信官方人呢,没人回答一下吗😂

    2019-03-12
    有用
    回复 5
登录 后发表内容