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访问地址,选择高级/安全打开才可以正常进行连接。