记坑:mqtt+微信小程序。

        背景:使用mpvue搭建微信小程序项目,利用mqtt进行物联网。

之前利用mpvue已经能连上阿里云的物联网平台进行通讯,但是我又搭建了EMQX在自己服务器上,想用自己的服务器进行通讯。首先先用页面写了个小demo,先进行测试,可以连接,然后我就转入微信小程序测试连接。结果很诡异,只要一点击连接,就不停地报 closeSocket:fail WebSocket is not connected。经过各种排查,终于查出问题。直接上代码:

        

this.url = 'wx://your.url:6666/mqtt'
      this.options = {
        connectTimeout: 4000,  //超时时间
        clientId: 'C_clientcc',  //随机生成ID
        username: '',  //用户名
        password: '',  //密码
      }
var client = mqtt.connect(this.url, this.options)

问题就在连接的url上,当然clientId用重复也会有问题,这里就不多说了。首先:如果使用的mqtt包连接,那么就要使用wx:(mqtt作者已经做过了二次封装).第二:url这里,如果勾选了不检验域名,可以使用IP地址或者域名,后面要跟上EMQX端口号,最后!要有/mqtt结尾!这里是大坑,我在页面写的demo测试连接的时候,是不需要带上的,我但是微信小程序用的mqtt要带上,查了各种资料才解决这个问题。最后提示:如果该端口没有SSL,那么用wx:,否则就要用wxs:  当然,正常上线的话,是要求检验域名的,即需要wxs: ,那么就要自己去服务器配置了。

页面使用的是这个:

https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值