基于NodeJs建设MQTT服务

大城市里の小女人 提交于 2020-02-27 18:12:57

近期因需要开发物联网项目,接触到了使用MQTT服务的网关,因此要在服务端实现MQTT服务,以接收数据。

使用NodeJs建设MQTT模式;

很常规的需要引入mqtt包,npm install mqtt --save,耐心等待,这一步基本上都没问题;

那么在服务端还需要mosca服务,同样,npm install mosca --save。但是在这一步下载时会出现不少问题,如:

(1)需要前置下载好python环境

(2)NodeJs版本不能过高,要在2.5-3.0之间

(3)不支持visual studio 2017,需要下载visual studio 2015

(4)报错:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1  此抱错需要install另外两个环境(备注:需要用“以管理员权限运行”,否则第二个安装不了),npm install -g node-gyp  ;  npm install --global --production  window-build-tools; 

可能还会遇到其他的;

贴两个代码以方便测试

1、服务端  (启动命令  node mqtt-server.js)

//var mosca = require('../../../root/node_modules/mosca');
var mosca = require('mosca');
var ascoltatore = {
  //using ascoltatore
  //type: 'mongo',
  //url: 'mongodb://localhost:27017/mqtt',
  //pubsubCollection: 'ascoltatori',
  //mongo: {}
};

var settings = {
  port: 1883,
  backend: ascoltatore
};

var server = new mosca.Server(settings);

server.on('clientConnected', function(client) {
    console.log('client connected', client.id);
});

// fired when a message is received
server.on('published', function(packet, client) {
  console.log('Published', packet.payload);
});

server.on('ready', setup);

// fired when the mqtt server is ready
function setup() {
  console.log('Mosca server is up and running');
}

2、客户端(node mqtt-test.js)

//var mqtt = require('../../../root/node_modules/mqtt/mqtt')
var mqtt = require('/node_modules/mqtt/mqtt')
var client  = mqtt.connect('mqtt://test.mosquitto.org')   //这里是公共测试地址,如果想要本地测试则改成127.0.0.1,服务器测试直接写服务器IP地址

client.on('connect', function () {
  client.subscribe('presence')
  client.publish('presence', 'Hello mqtt')
})

client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString())
  client.end()
})

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!