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