windows7 环境下,apache-activemq-5.15.10 + nginx-1.16.1 + 微信小程序
搭建环境
一、下载安装activemq http://activemq.apache.org/
安装好之后,启动服务在bin目录下
activemq start
注意配置文件 D:\apache-activemq-5.15.10\conf\activemq.xml
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> nodex js 端测试 端口
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> nginx 做代理的端口
</transportConnectors>
使用node js测试
1.新建测试文件目录 testmqtt
2. 进行 npm 初始化 npm init
3 新建 js_mqtt.js
-------------------------
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://localhost:1883')
client.on('connect', function () {
client.subscribe('presence', function (err) {
if (!err) {
client.publish('presence', 'Hello mqtt')
}
})
})
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString())
client.end()
})
-------------------------
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rA0hfRXi-1584951278125)(C:\Users\sunxingba\AppData\Roaming\Typora\typora-user-images\1584947559234.png)]
二、nginx 安装并配置ssl
-
下载 nginx
http://nginx.org/en/download.html
-
下载 Win64OpenSSL-1_1_1e.exe 并安装 ,用于在windows 下生成证书
应该使用 Win64OpenSSL-1_1_1e版本。下载地址http://slproweb.com/products/Win32OpenSSL.html
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bto634Zq-1584951278128)(C:\Users\sunxingba\AppData\Roaming\Typora\typora-user-images\1584948025982.png)]
-
安装 后配置1 配置系统环境变量
OPENSSL_HOME = D:\OpenSSLWin64\bin
-
安装后配置2
在cmd命令中执行如下命令即可: set OPENSSL_CONF=D:\OpenSSLWin64\bin\openssl.cfg // 不指定的话再生成证书时可能会找不到该配置 openssl 告警 can't open openssl.cnf
-
-
在nginx的conf目录下使用openssl生成ssl证书
执行命令根据提示填写 1->openssl genrsa -des3 -out server.key 2->openssl req -new -key server.key -out server.csr 3-> 拷贝server.key并重命名为server.key.org 4->去除密码,命令:openssl rsa -in server.key.org -out server.key 5->生成证书文件server.crt, 命令:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
-
修改nginx的配置文件nginx.conf
server { listen 443 ssl;# 默认https的监听端口 listen 1884 ssl;# 配置https的监听端口 server_name localhost;# 配置https的服务域名 ssl_certificate server.crt;# 刚才生成的证书 ssl_certificate_key server.key;# 刚才生成的秘钥 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; proxy_set_header X-Real_IP $remote_addr; proxy_set_header Host $host; proxy_set_header X_Forward_For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; location / { proxy_pass http://localhost:61614/; } }
-
启动nginx服务。
D:\nginx-1.16.1>nginx.exe
6.小程序测试连接
注意:将小程序开发工具的项目设置为 不进行合法性域名校验
微信小程序访问wss 在使用nginx 进行代理一定配置秘钥,否则会出现连接错误
小程序中采用引入 mqtt.2.18.8.min.js 文件的方式 连接mqtt。
const mqtt = require('../../utils/mqtt.2.18.8.min.js')
Page({
onLoad: function () {
// 连接mqtt,使用https的协议
const client = mqtt.connect('wxs://localhost:1884');// 对应nginx的https监听端口
client.on('connect', function() {
console.log('连接成功');
})
client.on('error', function(e) {
console.log('连接失败');
client.reconnect();
})
client.on('reconnect', function() {
console.log('正在重新连接…');
})
}
})
停止nginx 后 会无法连接
VM1538 asdebug.js:1 WebSocket connection to 'wss://localhost:1884/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
x 后 会无法连接
VM1538 asdebug.js:1 WebSocket connection to ‘wss://localhost:1884/’ failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED