Node.js连接MQTT服务器

安装mqtt

npm install mqtt -S

连接MQTT

创建WebsocketMqtt.js文件

const mqtt = require('mqtt')
var randomCount = Math.ceil(Math.random() * 9999) + "" + Date.parse(new Date());;
console.log(randomCount);
// 连接选项
const options = {
  connectTimeout: 4000, // 超时时间
  // 认证信息
  // clientId: 'emqx-connect-via-websocket' + randomCount,
  lientId: 'xxxxxx-user',
  username: 'xxxx',
  password: 'xxxxx',
}

var client;

client = mqtt.connect('ws://你的域名/mqtt', options);  

client.on('reconnect', (error) => {
  console.log('正在重连:', error)
})

client.on('error', (error) => {
  console.log('连接失败:', error)
})

client.on('connect', (e) => {
  console.log('成功连接服务器')

  // 订阅主题 下面的#是订阅XXXXX下面的所有主题
  client.subscribe('XXXXX/#', {
    qos: 1
  }, (error) => {
    if (!error) {
      console.log('订阅成功')
      // client.publish('XXXX', 'Hello EMQ', {
      //   qos: 1,
      //   rein: false
      // }, (error) => {
      //   console.log(error || '发布成功')
      // })
    }
  })
})

client.on('message', (topic, message) => {
  console.log('收到来自', topic, '的消息', message.toString())
})

//发送信息到Mqtt
/*
  jsonData:发送的数据
  theme: 发送的主题
*/
var sendMqttMsg = function(theme, jsonData) {
  client.publish(theme, JSON.stringify(jsonData), {
    qos: 1,
    rein: false
  }, (error) => {
	if(!error){
		
	}
    console.log(error || '发布成功')
  })
}

module.exports = {
	client: client,
	sendMqttMsg: sendMqttMsg,
}

运行在express Web服务

如果不会创建express服务,请参考我的另一个博客 Node.js创建WEB服务(express)
创建index.js文件

var net = require('net');
var express = require('express');
var app = express();
var server = net.createServer()

var WebsocketMqtt = require('./WebsocketMqtt.js')

//与网页的连接  开始
var http = require("http").createServer(app)

app.all('*', function(req, res, next) {
	// 解决跨域
	res.header("Access-Control-Allow-Origin", "*");
	res.header("Access-Control-Allow-Headers", "X-Requested-With");
	res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
	res.header("X-Powered-By", ' 3.2.1')
	res.header("Content-Type", "application/json;charset=utf-8");
	next()
})

app.get('/index', function(req, res) {
	console.log(555)
})

http.listen(8083, function() {
	var host = http.address().address
	var port = http.address().port
	console.log("应用实例,访问地址为 https://%s:%s", host, port)
})
//与网页的连接  结束

运行

node index.js
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值