使用node.js + koa + mqtt搭建一个服务器
不出以为就可以在终端看到订阅监听的通道以及发送的内容。3、新建app.js文件并写入以下代码。代码写入完成后再终端运行输入以下命令。在浏览器访问3000端口,会出现。在代码中导入mqtt 并进行连接。1、首先我们要初始化一个文件夹。
·
1、首先我们要初始化一个文件夹
npm init
2、安装koa
npm install koa
3、新建app.js文件并写入以下代码
//引入Koa
const koa=require('koa');
const app=new koa();
//配置中间件
app.use( async (ctx)=>{
ctx.body='hello koa2'
})
//监听端口
app.listen(3000);
//本地终端打印log
console.log('[demo] start-quick is starting at port 3000')
代码写入完成后再终端运行输入以下命令
node app.js
在浏览器访问3000端口,会出现
4、安装mqtt
npm install mqtt
在代码中导入mqtt 并进行连接
//引入Koa
const koa=require('koa');
const mqtt = require("mqtt");
const app=new koa();
//配置中间件
app.use( async (ctx)=>{
ctx.body='hello koa2'
})
const caPem = fs.readFileSync(path.join(__dirname, './tool/ca.pem'))
const mqtt5ClientKey = fs.readFileSync( path.join(__dirname, "./config/mqtt5Client.key"));
const mqtt5ClientPem = fs.readFileSync(path.join(__dirname, "./config/mqtt5Client.pem"));
const connectUrl = `ws://broker.emqx.io:8083/mqtt`
// 这个需要替换成自己公司部署出来的mqtt
const client = mqtt.connect(connectUrl, {
clientId: ffLockApi + new Date().getTime(),
username: 'admin',//公司mqtt用户名称
password: '12345',//密码 如果没有公司的,可以直接使用上面这条进行测试连接,可以行的通的
// 如果不是公司或者个人mqtt服务,下面的可以不用
key: mqttConfig.key,//key cert ca 这个是连接私人服务的密钥
cert: mqttConfig.cert,
rejectUnauthorized: true,
ca: mqttConfig.ca,
reconnectPeriod: 5000,
connectTimeout: 30 * 1000,
keepalive: 30 // emqtt必须设置keepalive的参数,否者会断开重连多次
});
// 需要订阅的主题
// const topic = 'test'; //这个实际应用自己需要监听的通道
//成功连接后触发的回调
client.on("connect", () => {
console.log("已经连接成功");
// 这里可以订阅多个主题
client.subscribe([topic], () => {
console.log(`订阅了主题 ${topic}`);
});
});
// 当客户端收到一个发布过来的消息时触发回调
client.on("message", function (topic, message) {
// 这里有可能拿到的数据格式是Uint8Array格式,所以可以直接用toString转成字符串
// let data = JSON.parse(message.toString());
console.log("返回的数据:", message);
console.log("返回的通道:", topic.toString());
});
// 连接断开后触发的回调
client.on("close", function () {
console.log("已断开连接");
});
// 连接错误的回调
client.on("error", function () {
console.log("mqtt error ",error);
});
//发布
setTimeout(() => {
let topic = 'test';
let msg = '123456'
//topic 发送的通道 msg发送内容 //实际应用需要根据自己需求加密等
client.publish(topic, msg);
},5000);
//监听端口
app.listen(3000);
//本地终端打印log
console.log('[demo] start-quick is starting at port 3000')
不出以为就可以在终端看到订阅监听的通道以及发送的内容
更多推荐
所有评论(0)