nodejs搭建MQTT服务器

nodejs搭建MQTT服务器前言mqtt协议介绍一mqtt协议介绍二图片来自https://www.jianshu.com/p/9e74287e3b07正文安装nodejs下载安装即可。安装mqtt.js模块新建一个文件夹,打开cmd,npminstallmqtt–save,这里很有可能能会报错,百度一下就可以解决。安装好mqtt.js模块后,文件夹中会多两个文件出来。搭建服务器mqttser…

大家好,又见面了,我是你们的朋友全栈君。

前言

mqtt协议介绍一

mqtt协议介绍二

Vmsk2q.png

图片来自https://www.jianshu.com/p/9e74287e3b07

正文

安装nodejs

下载安装即可。

安装mqtt.js模块

新建一个文件夹,打开cmd,npm install mqtt --save,这里很有可能能会报错,百度一下就可以解决。

安装好mqtt.js模块后,文件夹中会多两个文件出来。

搭建服务器

mqttserver.js源码

var mosca = require('mosca');
//构建自带服务器
var MqttServer = new mosca.Server({ 
   
    port: 1883
});
//对服务器端口进行配置, 在此端口进行监听
MqttServer.on('clientConnected', function(client) { 
   
    //监听连接
    console.log('client connected', client.id);
});
/** * 监听MQTT主题消息 **/
MqttServer.on('published', function(packet, client) { 
   
    //当客户端有连接发布主题消息
    var topic = packet.topic;
    console.log(packet);
    switch (topic) { 
   
        case 'test':
            console.log('message-publish', packet.payload.toString());
            //MQTT转发主题消息
            //MqttServer.publish({ topic: 'other', payload: 'sssss' });
            break;
        case 'other':
            console.log('message-123', packet.payload.toString());
            break;
    }
});

MqttServer.on('ready', function() { 
   
    //当服务开启时
    console.log('mqtt is running...');
});

node mqttserver.js开启服务器

VmDdmD.png

服务器运行成功。

开启订阅

subclient.js源码

var mqtt = require('mqtt');  
var client2 = mqtt.connect("mqtt://127.0.0.1:1883");   //指定服务端地址和端口
  
client2.subscribe('test',{ 
   qos:1});//订阅主题为test的消息 
  
client2.on('message',function(top,message) { 
     
    console.log(message.toString());  
});  

node subclient.js开启订阅

开启发布

pubclient.js源码

var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://127.0.0.1'); //连接到服务端
//client.subscribe('presence');
var num = 0;
var qtt = { 
   }; //定义消息(可以为字符串、对象等)
qtt = 'helloworld';
setInterval(function() { 
    //3秒钟发送一次 消息到主题 SN69143809293670state 消息为helloworld
    client.publish('test', qtt, { 
    qos: 0, retain: true });  
}, 3000);

node pubclient.js开启发布


此时,会发现如下结果

服务器

[Vmrt4s.png

订阅方

VmrwvV.png

说明mqtt服务器搭建成功。

实验体会

讲一下MQTT一个通俗的理解。

MQTT服务器类似一个公告栏,里面张贴了各种广告。

张三跑过来说,凡是涉及足球的(/public/TEST/Soccer)的都发给自己(订阅)

第二天,李四过来贴广告了,主题是(/public/TEST/Soccer),发布的内容是“30号有比赛”

此时,公告栏(MQTT服务器)会自动发短信给张三,发送的信息为 “30号有比赛”。

实验流程分析

1、实验中,mqtt服务器上有两个主题的信息test和other

2、订阅方发布一个主题为test的订阅,当mqtt也会得到这个这个主题的信息时,就会发给订阅方

3、发布方发布一个主题为test的信息到mqtt服务器

4、当mqtt服务器得知与订阅方相匹配的订阅时,会把这个主题消息的内容发给订阅方

初学者,有问题请指正。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140754.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 冲刺阶段 – PMP易错概念(持续更新中)

    冲刺阶段 – PMP易错概念(持续更新中)文章目录1.基础概念2.整合管理3.范围管理4.进度管理5.成本管理6.质量管理7.资源管理8.沟通管理9.风险管理10.采购管理11.相关方管理1.基础概念1.“管理层在项目管理方面缺乏经验”不是项目失败的原因。管理层可以不懂项目管理,但项目经理必须要非常精通项目管理,这里还有一个假设就是组织拥有非常充分的组织过程资产,即便经验不足,也可以去学习和借鉴组织过程资产。2.子项目的划分,根据项目的复杂性来划分,以便更好的去管理与控制项目,子项目会细化工作,故增加工

    2022年5月19日
    42
  • 2017.8.22

    2017.8.22

    2022年3月6日
    43
  • Edge breaker记录

    Edge breaker记录和代码相关性非常强的是这篇文章,几乎就是伪代码了:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.58.7918&rep=rep1&type=pdf一、Compression阶段命令参数为umbrellla_times4.offB第一个参数就是输入网格,目前支持OFF和OVTable两种文件格式,这里…

    2022年6月1日
    39
  • 开源库TinyXML2简介及使用

    开源库TinyXML2简介及使用TinyXML2是一个开源、简单、小巧、高效的C++XML解析器,它只有一个.h文件和一个.cpp文件组成,可以轻松集成到其它程序中。它解析XML文档并从中构建可以读取、修改和保存的文档对象模型(DocumentObjectModel,DOM)。它不能解析DTD(DocumentTypeDefinitions,文档类型定义)或XSL(eXtensibleStylesheetLan…

    2022年6月14日
    166
  • 发现C++Builder 2010一组类BUG

    发现C++Builder 2010一组类BUG

    2022年1月16日
    45
  • 镁光闪存颗粒对照表_海力士、南亚、镁光内存颗粒编码解析,妈妈再也不用担心你买内存条了…「建议收藏」

    镁光闪存颗粒对照表_海力士、南亚、镁光内存颗粒编码解析,妈妈再也不用担心你买内存条了…「建议收藏」海力士、南亚、镁光内存颗粒编码解析,妈妈再也不用担心你买内存条了2019-12-1915:19:5740点赞221收藏11评论你是AMDYes党?还是intel和NVIDIA的忠实簇拥呢?最新一届#装机大师赛#开始啦!本次装机阵营赛分为3A红组、intelNVIDIA蓝绿组、混搭组还有ITX组,实体or虚拟装机都能参与,可使用值得买定制化DIY装机工具在文中展现配置单!每个小组均有精美礼品,…

    2022年6月22日
    592

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号