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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 净推荐值(NPS)完整行动指南[通俗易懂]

    净推荐值(NPS)完整行动指南[通俗易懂]前言随着越来越多的SaaS公司想要提高客户忠诚度,使得衡量忠诚度的方法得到了发展,其中最受欢迎的方式之一就是净推荐值(NPS)。实际上,全球有55%的公司使用NPS来衡量客户满意度和忠诚度。净推荐值不是一个“虚荣指标”,当你与客户的工作发生交叉引用时,NPS可以用来推断客户实际上使用感到高兴的情况。你可以利用这些“行为模式”的见解来指导你的客户使用产品。因此,NPS可以指导新手入门和产品开发,帮助你减少客户流失并提高留存率。是否想知道如何衡量你的NPS?如何通过客户数据的交叉引用以指导产品.

    2022年6月13日
    27
  • Android studio安装教程(2020/11/20最新版本的安装)[通俗易懂]

    Android studio安装教程(2020/11/20最新版本的安装)[通俗易懂]最新版Androidstudio的安装教程,安装步骤详细!对于gradle下不下来以及想整一个低版本的SDK的问题进行了解答!

    2022年5月23日
    378
  • WIFI 常识

    WIFI 常识DSSS(DirectSequenceSpreadSpectrum)直接序列扩频FHSS,跳频技术(Frequency-HoppingSpreadSpectrum)FHSS和DSSS比较跳频扩频(FHSS):跳频扩频(FHSS)技术是通过“伪随机码”的调制,信息的载波受一伪随机序列的控制,使载波工作的中心频率不断跳跃改变,而噪音和干扰信号的中心频率却不会改变,这样,只要收、发信机之间按照固定的数字算法产生相同的“伪随机码”,就可以达到同步,排除了噪音和其它干扰信号。虽然在..

    2022年7月20日
    10
  • SQL分页查询_Sql根据某个字段分页

    SQL分页查询_Sql根据某个字段分页SQL分页查询:背景​ 在公司的系统中有一个平台是做配置管理的就是所谓的CRUD的平台,但是点击后进去到页面第一次看到的是一次查询的页面(点击页面自动的触发查询的功能)后面就可以你的CRUD的操作是给运营的同事来操作的,但是一般的是我们数据量比较的少的业务是之间查询出来所有的数据,直接返回给前端的让他自己做分页的,但是有一些数据量达到上万级别的时候,不能让他们乱搞了,…

    2022年4月19日
    136
  • sscanf,sscanf_s及其相关使用方法「建议收藏」

    sscanf,sscanf_s及其相关使用方法

    2022年1月18日
    215
  • Google资深工程师深度讲解Go语言-channel 通道 (十)

    Google资深工程师深度讲解Go语言-channel 通道 (十)

    2022年2月16日
    54

发表回复

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

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