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:[
]
}
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訪問地址,選擇高級/安全打開才可以正常進行連接。