nodejs 環境配置https+mqtt服務


nodejs下https服務可以使用nginx或者http-server

一、https服務首先需要的證書的配置

1.生成RSA密鑰的方法

openssl genrsa -des3 -out key.pem 2048

這個命令會使用des3方法加密的密碼生成一個2048位的密鑰

openssl genrsa -out key.pem 2048

生成未加密的密鑰

2.生成一個證書

openssl req -new -key key.pem -out cert.csr

使用密鑰key.pem生成一個證書請求文件。可以使用該文件去數字證書頒發機構(即CA)申請一個數字證書。

如果是自己測試,可以使用下面的命令生成證書

openssl req -new -x509 -key key.pem -out cert.pem -days 1095

該命令使用密鑰key.pem生成一個數字證書cert.pem

二、mqtt服務

在nodejs下我們使用mosca來做mqtt服務

1.安裝mosca 

npm install mosca

brew install mosca

yarn add mosca

使用以上任意一種方式安裝都可以

2.開啟mqtt服務

在vscode 環境下我們創建文件mqttserver.js

const mosca = require("mosca")

const SECURE_KEY=dirname+'/key.pem"

const SECURE_CERT = dirname+"/cert.pem"

const mqttSetting  = {

  interfaces:[

  { type: "mqtt", port: 1883 },
  { type: "http", port: 3000, bundle: true },
  { type: "mqtts", port: 8883, bundle: true, credentials: { keyPath: SECURE_KEY, certPath: SECURE_CERT } },
  { type: "https", port: 1884, bundle: true, credentials: { keyPath: SECURE_KEY, certPath: SECURE_CERT } }

  ]

}

const mqttServer = new mosca.Server(mqttSetting)

mqttServer.on("clientConnected",client => {

  console.log( "client conencted",client.id )

})

mqttServer.on("published",(packet,client) => {

  const { topic, payload } = packet.topic

  console.log( topic, payload.toString() )

})

mqttServer.on("ready",() => {

  console.log("mqtt is running...")

})

3.運行

在nodejs環境下可以安裝插件Code Runner來直接運行該代碼開啟mqtt服務,也可以使用命令node [js的path路徑]運行或者配置pm2運行的json文件

 

三、使用mqtt訂閱發布

1.mqtt可以使用EMQ的mqtt,也可以使用Ecllipse的Paho

EMQ的在nodejs環境下直接使用命令安裝

npm i mqtt

brew install mqtt

yarn add mqtt

非nodejs環境下可以通過script引入,地址:https://unpkg.com/mqtt/dist/mqtt.min.js。同時不同版本可以https://unpkg.com/mqtt@4.1.0/dist/mqtt.min.js控制sdk版本

創建代碼

const client = mqtt.connect("[協議]://[hostname/ip]:[port]/mqtt")

client.on("connect",()=>{})//連接成功

client.on("error",()=>{})//連接失敗

client.on("message",(topic,payload)=>{})//接受訂閱消息

client.subscribe([主題])//訂閱主題

client.pulish("主題","massage")//向某個主題發送消息

Ecllipse下

npm i paho-mqtt

...

script引用地址https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js

const client = new Paho.MQTT.Client(hostname,port,clientid)
client.connect({
  onSuccess:()=>{}
})

注:在非認證的證書下需要在瀏覽器手動輸入mqtt訪問地址,選擇高級/安全打開才可以正常進行連接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM