windows下小程序連接mqtt 連接配置

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&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>  nodex js 端測試 端口
            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;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

  1. 下載 nginx

    http://nginx.org/en/download.html

  2. 下載 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
      
  3. 在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 
    
  4. 修改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/;
            }
        }
    
  5. 啓動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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章