微信小程序使用MQTT.JS中遇到的问题

二、实现过程:

1、购买阿里云服务器;

2、购买域名,并进行域名备案;

5、阿里云服务器上Windows平台搭建Nginx服务器;

6、Nginx配置SSL证书、反向代理、配置为自启动服务(),SSL证书配置参考,

三、过程中遇到的问题:

1、问题1:由于跟设备之间进行通信,统一通信格式为十六进制字节数组格式,MQTT.JS需要支持发布字节数组格式,原有代码里面只支持发布字符串格式;

四、问题解决思路

1、问题1解决思路

开始出现这个问题,网络上更多的是更换MQTT.JS版本,尝试了多个版本的更换后,发现报的错误也不一样,最后确定一个版本,进行单步调试,发现有两处代码需要调整,具体代码调整如下,修改后可以支持发送十六进制字节数组。

2、问题2解决思路

出现模拟器可以正常连接、发布与接收消息,实际存在两种情况。

(1)MQTT.JS的版本问题,通过更新最新的版本或者其中一些稳定的版本可以解决,模拟器调试的时候存在sec-websocket-protocol:mqtt,而真机上不存在的时候,这个可以通过更新MQTT.JS进行解决。

(2)安卓真机必须使用TLS/433端口,在用模拟器和IOS的时候是正常的,但是用安卓的时候必须使用TLS/433端口,不能在连接地址处带端口。

由于安卓真机在连接EMQ的时候,连接地址不能带端口,因此我们需要利用Nginx将wss://域名/mqtt映射到我们实际的8083或者8084端口上进行使用。

经验分享 程序员 微信小程序 职场和发展