MQTT NodeJS 微信小程式

2021-09-12 17:13:42 字數 4789 閱讀 9930

以下僅為本地開發環境搭建過程記錄,作業系統為win10。

nodejs環境搭建較為簡單,訪問nodejs官網,根據系統不同選擇不同方式安裝。

nodejs可以使用mosca模組搭建mqtt伺服器。

* http方式

// https證書位置

//通過attachhttpserver(),使得可以從瀏覽器或其他方式以https埠連線mqtt伺服器

;mosca提供authenticateautenticatepunlishauthenticatesubscribe方法對連線請求進行驗證,均可以被覆蓋。

//連線認證,驗證上傳的使用者名稱和密碼與伺服器儲存的資訊(如資料庫)一致

const user =

;const

authenticate

=(client, username, password, callback)

=>

;//發布校驗,授權可以發布'/users/user/'或者'/public/'下的主題

const

authenticatepublish

=(client, topic, payload, callback)

=>

else

if(t[1]

=='users'

)else

}//訂閱校驗,授權可以訂閱'/users/user/'或者'/public/'下的主題

const

authenticatesubscribe

=(client, topic, callback)

=>

else

if(t[1]

=='users'

)else

}mqttserver.on(

'ready',(

)=>

);

mosca可以監聽的事件參考官方文件。

//部分事件示例如下

mqttserver.on(

'clientconnected'

,(client)

=>);

mqttserver.on(

'subscribed'

,(topic, client)

=>

; mqttserver.

publish

(qtt);}

);mqttserver.on(

'unsubscribed'

,(topic, client)

=>

)mqttserver.on(

'clientdisconnected'

,(client)

=>);

mqttserver.on(

'published'

,(packet, client)

=>

;switch

(topic)

case

'other':}

}

nodejs本地啟動https服務需要金鑰和證書,可以使用openssl對自身簽證。

window平台可以選擇其他開源平台提供的工具,如選擇32位或64位light版(小但能用)。

安裝好之後,可能需要手動配置環境變數,在path中新增安裝路徑中的bin目錄,即openssl.exe所在的目錄)。

以管理員模式啟動cmd,進入想要儲存證書的目錄,輸入如下命令:(參考node.js在本地啟動https服務)。

為伺服器端和客戶端準備公鑰、私鑰

// 生成伺服器端私鑰

openssl genrsa -out server.key 1024

// 生成伺服器端公鑰

openssl rsa -in server.key -pubout -out server.pem

// 生成客戶端私鑰

openssl genrsa -out client.key 1024

// 生成客戶端公鑰

openssl rsa -in client.key -pubout -out client.pem

生成 ca 證書

// 生成 ca 私鑰

openssl genrsa -out ca.key 1024

// x.509 certificate signing request (csr) management.

openssl req -new -key ca.key -out ca.csr

// x.509 certificate data management.

openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt

第2步中的organization name (eg, company) [internet widgits pty ltd]: 後面生成客戶端和伺服器端證書的時候也需要填寫,不要寫成一樣的

生成伺服器端證書和客戶端證書

// 伺服器端需要向 ca 機構申請簽名證書,在申請簽名證書之前依然是建立自己的 csr 檔案  

openssl req -new -key server.key -out server.csr

// 向自己的ca機構申請證書,簽名過程需要ca的證書和私鑰參與,最終頒發乙個帶有ca簽名的證書

openssl x509 -req -ca ca.crt -cakey ca.key -cacreateserial -in server.csr -out server.crt

// client 端

openssl req -new -key client.key -out client.csr

// client 端到 ca 簽名

openssl x509 -req -ca ca.crt -cakey ca.key -cacreateserial -in client.csr -out client.crt

完成後,所在資料夾下生成如下檔案:

├── ca.crt

├── ca.csr

├── ca.key

├── ca.srl

├── client.crt

├── client.csr

├── client.key

├── client.pem

├── server.crt

├── server.csr

├── server.key

└── server.pem

再使用nodejs的https模組啟動https服務即可,配置方法見node.js https.

mqtt.js文件

const mqtt =

require

('../../utils/mqtt.min.js');

const mqttoptions =

;const mqtthost =

'wxs://localhost'

;const mqttclient = mqtt.

connect

(mqtthost, mqttoptions)

;mqttclient.on(

'connect'

,function()

)mqttclient.on(

'message'

,function

(topic, message)

)mqttclient.on(

'reconnect'

,(error)

=>

)mqttclient.on(

'error'

,(error)

=>

)//以下是發布和訂閱的方法,其他方法詳見文件

mqttclient.

publish

(topic, message,

[options]

,[callback]);

mqttclient.

subscribe

(topic/topic array/topic object,

[options]

,[callback]

);

(微信小程式)一 初識微信小程式

需要看的 先是檔案目錄 一 pages 他存放於多個頁面 如 index log頁面。可以把他裡面的每個資料夾看成乙個整體。這個整體存放著 html css 和 資料 1 index資料夾 存放的index頁面的目錄。2 index.js 他可以處理得到 ajax 或自定義定義的資料。把得到的值封裝...

微信小程式

2.單獨設定某一頁面下的頂部欄的背景顏色,在其對應的.json檔案下修改即可 3.this.setdata 注意 onload函式下面執行的是非同步操作,非同步操作裡面this.data.直接賦值,是無效的,必須使用this.setdata this.setdata msg he llo wor l...

微信小程式

你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展示 全新的ka...