
服务器配置
配置wss
将wss的消息转到ws上
nginx配置如下
server {
listen 443 ssl;
server_name xxx.emqx.io;
ssl_certificate cert/***.pem;
ssl_certificate_key cert/***.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 添加反向代理
location /mqtt {
proxy_pass http://127.0.0.1:8083/mqtt;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# client_max_body_size 35m;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
小程序配置
设置合法域名
登录小程序后台 --> 开发 --> 开发管理 --> 开发设置 --> 服务器域名 --> socket合法域名 --> 设置wss域名
小程序设置
下载MQTT程序,不要用EMQ官方的demo,那个只能在模拟器运行,真机不行。
代码
const client = mqtt.connect('wxs://xxxx', {
protocolVersion: 4, //MQTT连接协议版本
clientId: '''xxxxx''',
clean: true,
password: 'xxx',
username: 'xxx',
reconnectPeriod: 1000, //1000毫秒,两次重新连接之间的间隔
connectTimeout: 30 * 1000, //1000毫秒,两次重新连接之间的间隔
resubscribe: true //如果连接断开并重新连接,则会再次自动订阅已订阅的主题(默认true)
});
//服务器连接异常的回调
client.on("error", function(error) {
console.log(" 服务器 error 的回调" + error)
})
//服务器重连连接异常的回调
client.on("reconnect", function() {
console.log(" 服务器 reconnect的回调")
})
//服务器连接异常的回调
client.on("offline", function(errr) {
console.log(" 服务器offline的回调")
})
其他就都一样了