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

nodejs 环境配置https+mqtt服务

上一篇:根据邮箱查询教师信息


下一篇:Net中事件的用法之一