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服务器得知与订阅方相匹配的订阅时,会把这个主题消息的内容发给订阅方

初学者,有问题请指正。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • 读书笔记-APUE第三版-(8)进程控制

    读书笔记-APUE第三版-(8)进程控制

    2021年11月13日
  • 电脑爱好者必须懂得的电脑简单英语单词[通俗易懂]

    电脑爱好者必须懂得的电脑简单英语单词[通俗易懂]使用电脑必懂的53个英文单词和缩写!  ·PC:个人计算机PersonalComputer  ·CPU:中央处理器CentralProcessingUnit  ·CPUFan:中央处理器的“散热器”(Fan)  ·MB:主机板MotherBoard  ·RAM:内存RandomAccessMemory,以PC-代号划分规格,如PC-133,PC-1066,PC-27…

  • Centos7单节点部署RabbitMQ

    Centos7单节点部署RabbitMQ

  • kettle视频教程[通俗易懂]

    kettle视频教程[通俗易懂]kettle实战视频教程分享,有需要的自取哈~kettle视频教程播放地址具体内容如下:文件和数据库表的互相转换处理数据库单表的全量同步开始学习数据库单表的增量同步数据库同步错误原因记录到oracle日志表多个数据库表融合到一个数据库业务表比较不同的数据库表进行数据的一致性处理通过配置文件做表的全量同步,一个作业统统搞定通过配置文件做数据表的增量同步,一个作业统统搞定整体数据库迁移(表全量和表增量)windows下的kettle作业调度Linux下的kettle作业调度.

  • dism失败 ox800f0818_Win 10 DISM 一直失败,错误: 0x8000ffff – Microsoft Community[通俗易懂]

    dism失败 ox800f0818_Win 10 DISM 一直失败,错误: 0x8000ffff – Microsoft Community[通俗易懂]你好!了解到您的问题。在使用RestoreHealth命令时是需要在检测出系统出现问题且映像文件可修复的情况下才能使用;Dism/Online/Cleanup-Image/ScanHealth这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一致情况。Dism/Online/Cleanup-Image/CheckHealth这条命令必须在前一条命令执行完以后,发现系统文件…

  • linux搭建php运行环境_linux系统开发环境搭建

    linux搭建php运行环境_linux系统开发环境搭建一、安装Apache2.2.221、到官网下载http://httpd.apache.org/download.cgi,选择相应的版本这里,我选择的是最新的版本可以先下载到windows系统中,上传到linux,也可以直接下载到linux:wgethttp://mirrors.tuna.tsinghua.edu.cn/apache//httpd/http…

发表回复

您的电子邮箱地址不会被公开。

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