uniapp 微信小程序 mqtt 真机调试 笔记
一、uniapp代码:只要微信小程序模拟器运行正常就说明前端配置没问题
// #ifdef MP-WEIXIN self.options = { username:"username", password:"password", } var client = mqtt.connect('wxs://www.xxx.com/mqtt',self.options) // #endif
二、mqtt服务端配置(参考https://www.cnblogs.com/wishit/p/16014252.html)
三、NGINX安装及配置
1、NGINX安装
官网下载地址:https://nginx.org/en/download.html 最新稳定版(stable version) ***注意:不能使用中文路径***
2、为了启动(重启等)操作方便,在NGINX根目录新建一个nginx.bat文件
@echo off&color e&Title Nginx 命令行控制台 cls :Begin echo ********************************** echo. echo Nginx 命令行控制台 echo. echo ********************************** echo. & echo Script: %0% & echo. echo 请输入命令: echo. echo reload 重载 Nginx 配置 echo stop 停止 Nginx 服务 echo quit 退出 Nginx 服务 echo list 查询 Nginx 服务 echo info 输出 Nginx 安装信息 echo. echo kill 杀死 Nginx 进程 echo start 启动 Nginx 进程 echo restart 重启 Nginx 配置 echo. echo exit 退出控制台 echo cmd 启动 cmd echo.&echo.&set /p cmd=请输入: if "%cmd%"=="kill" goto Kill if "%cmd%"=="exit" goto End if "%cmd%"=="start" goto Start if "%cmd%"=="info" goto Info if "%cmd%"=="restart" goto ReStart if "%cmd%"=="reload" goto Reload if "%cmd%"=="stop" goto Stop if "%cmd%"=="quit" goto Quit if "%cmd%"=="list" goto List if "%cmd%"=="cmd" goto Cmd cls goto Begin :End exit :Kill cls echo. echo 尝试杀死 Nginx 进程 echo. echo.&echo. taskkill /F /IM nginx.exe set cmd= echo.&echo 执行完成 echo.&echo. goto Begin :Info cls echo. echo 输出 Nginx 安装信息 echo. nginx.exe -V set cmd= echo.&echo. goto Begin :Start cls echo. echo 尝试启动 Nginx 进程 echo. echo.&echo. start nginx.exe set cmd= echo.&echo 执行完成 echo.&echo. goto Begin :ReStart cls echo. echo 尝试杀死 Nginx 进程 echo. echo.&echo. taskkill /F /IM nginx.exe echo. echo 尝试启动 Nginx 进程 echo. echo.&echo. start nginx.exe set cmd= echo.&echo 执行完成 echo.&echo. goto Begin :Reload cls echo. echo 尝试重新加载 Nginx 配置文件 echo. echo.&echo. nginx.exe -s reload set cmd= echo.&echo 执行完成 echo.&echo. goto Begin :Stop cls echo. echo 停止 Nginx 服务 echo. echo.&echo. nginx.exe -s stop set cmd= echo.&echo 执行完成 echo.&echo. goto Begin :Quit cls echo. echo 退出 Nginx 服务 echo. echo.&echo. nginx.exe -s quit set cmd= echo.&echo 执行完成 echo.&echo. goto Begin :List cls echo. echo 查询 Nginx 服务 echo. tasklist /fi "imagename eq nginx.exe" set cmd= echo.&echo. goto Begin :Cmd cls start cmd set cmd= goto Begin
3、准备证书(以阿里云为例,下载NGINX证书)
NGINX根目录新建ssl文件夹,将证书文件xxx.key,xxx.pem拷贝到ssl文件夹
4、配置NGINX.CONF
upstream webcom { #这里类似一个别名,在下文中使用 server 127.0.0.1:5000; #端口改为自己的端口 keepalive 64; } upstream apicom { #这里类似一个别名,在下文中使用 server 127.0.0.1:5001; #端口改为自己的端口 keepalive 64; } server { listen 80; server_name www.lengkucloud.com; rewrite ^(.*)$ https://$host$1 permanent;#用户访问时实现http强制跳转为https } server { listen 443 ssl;#监听端口 server_name www.xxx.com;#配置域名,修改为你自己的域名 root html; index index.html index.htm index.php; ssl_certificate ./ssl/xxx.pem;#配置SSL证书,修改为你自己的证书 ssl_certificate_key ./ssl/xxx.key;#配置证书密钥,修改为你自己的 access_log ./logs/xxx.log;#配置日志输出,修改为你自己的 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 {#当访问为wss://www.xxx.com proxy_pass https://www.xxx.com:8888; #mqtt服务端监听的端口号(8888改为你自己的端口),8888端口就是wss通讯端口,这里做代理转发 proxy_redirect off; proxy_set_header Host www.xxx.com:8888; proxy_set_header Sec-WebSocket-Protocol mqtt; # 这些都是 websocket必须要配置的 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /api/ {#小程序访问api按此方法配置https的访问 proxy_pass http://apicom/;#这里使用的是别名,在上面定义了的 } location / {#其余的就转发到网站实现https的访问 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection ""; proxy_pass http://webcom/;#这里使用的是别名,在上面定义了的 } }
配置完成后,启动(或重启)NGINX即可,这样小程序mqtt真机调试,web的HTTPS,api的HTTPS就都可以了