91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Node搭建本地MQTT服務(wù)器

信盈達(dá) ? 2022-05-26 14:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

2d616c00-da9b-11ec-b80f-dac502259ad0.png

大家好,我是牛牛。今天給分享一下使用Node搭建MQTT服務(wù)端的流程,主要包含以下幾部分內(nèi)容:

MQTT介紹

MQTT基本原理及相關(guān)概念

Node搭建MQTT


一、MQTT介紹


MQTT 是一種基于發(fā)布/訂閱模式的輕量級(jí)物聯(lián)網(wǎng)消息傳輸協(xié)議 ,可以用極少的代碼和帶寬為聯(lián)網(wǎng)設(shè)備提供實(shí)時(shí)可靠的消息服務(wù),它廣泛應(yīng)用于物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、智能硬件、車聯(lián)網(wǎng)、電力能源等行業(yè)。


MQTT主要有以下幾個(gè)特點(diǎn)(來自百度和MQTT中文網(wǎng)):

使用發(fā)布/訂閱消息模式,一對(duì)多的消息發(fā)布

開發(fā)消息協(xié)議,易于實(shí)現(xiàn)

1字節(jié)固定頭,2字節(jié)報(bào)文,開銷小

基于TCP/IP協(xié)議族,提供有序,無損,雙向鏈接

與HTTP之類的協(xié)議相比,MQTT在通過網(wǎng)絡(luò)傳輸數(shù)據(jù)時(shí)表現(xiàn)出眾。另一個(gè)重要特點(diǎn)是易于在客戶端實(shí)現(xiàn)。

二、MQTT基本原理與相關(guān)概念

1.1 MQTT基本原理

在MQTT協(xié)議通訊中,有兩個(gè)最為重要的角色。它們分別是服務(wù)端和客戶端。

1、 MQTT服務(wù)端

MQTT服務(wù)端通常是一臺(tái)服務(wù)器。它是MQTT信息傳輸?shù)臉屑~,負(fù)責(zé)將MQTT客戶端發(fā)送來的信息傳遞給MQTT客戶端。MQTT服務(wù)端還負(fù)責(zé)管理MQTT客戶端。確??蛻舳酥g的通訊順暢,保證MQTT消息得以正確接受和正確投遞。

2、 MQTT客戶端

MQTT客戶端可以向服務(wù)端發(fā)布信息,也可以從服務(wù)端收取信息。把客戶端發(fā)送信息的行為稱為“發(fā)布”信息。而客戶端要想從服務(wù)端收取信息,則首先要向服務(wù)端“訂閱信息”。


1.2MQTT主題

MQTT服務(wù)端在管理MQTT信息通訊時(shí),就是使用“主題”來控制的。

1.3MQTT發(fā)布與訂閱特性

MQTT通訊的核心樞紐是MQTT服務(wù)端。有了服務(wù)端對(duì)MQTT信息的接、儲(chǔ)存、處理和發(fā)送,客戶端在發(fā)送和訂閱消息時(shí),可以相互獨(dú)立,且在空間上可以分離,時(shí)間上可以異步。


三、Node搭建MQTT服務(wù)器

node安裝:

https://www.runoob.com/nodejs/nodejs-install-setup.html

3.1 安裝模塊

安裝所需要的MQTT模塊

可以使用mosca也可以使用依賴較小的adedes

https://www.npmjs.com/package/aedes

npm install aedes --save

如果下載慢指定鏡像源后再次執(zhí)行安裝:

npm config set registry https://registry.npm.taobao.org

3.2開啟服務(wù)端

服務(wù)器node端,新建index.js

// 引入模塊var aedes = require('aedes')();
//創(chuàng)建服務(wù)var server = require('net').createServer(aedes.handle);
// 監(jiān)聽客戶端連接aedes.on('client',(client)=>{ console.log("客戶端連接,clientId:"+client.id)})
// 監(jiān)聽客戶端斷開aedes.on('clientDisconnect',(client)=>{ console.log("客戶端斷開連接,clientId:"+client.id)})
//監(jiān)聽端口server.listen(1883,()=>{ console.log('[ Server ] server listening on port:1883');})

默認(rèn)服務(wù)器ip地址為127.0.0.1,也可以自己指定。


運(yùn)行服務(wù)端:

node index.js

使用MQTT.fx工具進(jìn)行測試服務(wù)端連接:

2d9b32d2-da9b-11ec-b80f-dac502259ad0.png

點(diǎn)擊 Connect可以看到右側(cè)圖標(biāo)變綠,則代表連接成功。

2de20590-da9b-11ec-b80f-dac502259ad0.png

同時(shí)服務(wù)端會(huì)顯示,連接的客戶端的id

2e5677d6-da9b-11ec-b80f-dac502259ad0.png

點(diǎn)擊 Disconnect可以看到右側(cè)圖標(biāo)變灰,則代表斷開成功。

2e9269ee-da9b-11ec-b80f-dac502259ad0.png

同時(shí)在服務(wù)端可以看到斷開連接的客戶端id

2ecc96b4-da9b-11ec-b80f-dac502259ad0.png

到目前為止,還沒有添加身份認(rèn)證,也就代碼只要用戶知道服務(wù)端的ip和端口號(hào)都可以連接進(jìn)來,如果需要考慮安全性,則可以添加身份驗(yàn)證。

3.3 添加身份驗(yàn)證

使用aedes.authenticate添加身份驗(yàn)證

2efdd6d4-da9b-11ec-b80f-dac502259ad0.png


// 身份驗(yàn)證aedes.authenticate = function (client, username, password, callback) { callback(null, username === "xydadmin" && password.toString()==="123456")}

添加驗(yàn)證后嘗試連接,報(bào)錯(cuò):

2f5385c0-da9b-11ec-b80f-dac502259ad0.png

在配置中添加用戶名和密碼,嘗試重連

2f89ced2-da9b-11ec-b80f-dac502259ad0.png


2ff496cc-da9b-11ec-b80f-dac502259ad0.png

3.4消息訂閱與消息發(fā)布

添加消息訂閱

// 設(shè)置訂閱aedes.on('subscribe', function (subscriptions, client) {
if (client) { // subscriptions 訂閱主題列表,一般一次訂閱一個(gè) console.log('[ Subscribe ] SubscripTions:'+subscriptions[0].topic,' Qos:'+subscriptions[0].qos,' CilentID:'+client.id); }});

添加消息發(fā)布

// 設(shè)置發(fā)布aedes.on('publish',function(packet,client) { if (client) { // packet為發(fā)布的信息 console.log('[ Publish ] CilentID:'+client.id,' Qos:'+packet.qos,' Data:[ '+String(packet.payload),' ]'); }});

取消訂閱

//取消訂閱aedes.on('unsubscribe',function(unsubscriptions,client){ if(client){ console.log('[ unSubscribe ] unSubscripTions:'+unsubscriptions[0],' CilentID:'+client.id); }});

消息的發(fā)布與訂閱測試,目前是發(fā)布和訂閱使用相同的topic,在發(fā)布topic處設(shè)置發(fā)送內(nèi)容,客戶端訂閱了topic則可以接收到該發(fā)布topic的信息。

3.5MQTT.fx測試消息的發(fā)布和訂閱

訂閱topic:/login

302e45fc-da9b-11ec-b80f-dac502259ad0.png

發(fā)布topic:/login

3061bebe-da9b-11ec-b80f-dac502259ad0.png

查看訂閱topic處,即可看到發(fā)送的內(nèi)容。

30872d70-da9b-11ec-b80f-dac502259ad0.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10250

    瀏覽量

    91476
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    零基礎(chǔ)如何用云服務(wù)器搭建網(wǎng)站?完整教程

    準(zhǔn)備(域名與服務(wù)器)、系統(tǒng)與環(huán)境配置、網(wǎng)站部署、上線后的安全與性能優(yōu)化、以及日常運(yùn)維。每個(gè)步驟都配合實(shí)用操作建議,便于一步步完成搭建工作。遇到疑難環(huán)節(jié)時(shí),恒訊科技可以在服務(wù)器選型、網(wǎng)絡(luò)配置與運(yùn)維保障
    的頭像 發(fā)表于 01-29 16:18 ?271次閱讀

    Node-RED+Modbus_slave:JSON數(shù)據(jù)采集與阿里云服務(wù)器上傳

    1.引言 1.1文檔說明 本文檔介紹的是使用node-red將modbus_slave模擬的485數(shù)據(jù)進(jìn)行JSON數(shù)據(jù)封裝后,上傳到阿里云ECS私人搭建服務(wù)器,數(shù)據(jù)通過服務(wù)器出處理后
    的頭像 發(fā)表于 01-05 17:37 ?692次閱讀
    <b class='flag-5'>Node</b>-RED+Modbus_slave:JSON數(shù)據(jù)采集與阿里云<b class='flag-5'>服務(wù)器</b>上傳

    ESP32-C3 mqtt操作實(shí)踐

    使用MQTT進(jìn)行通信。 MQTT在物聯(lián)網(wǎng)領(lǐng)域的使用非常的廣泛,其協(xié)議在眾多的智能控制領(lǐng)域廣泛的使用。 本次實(shí)驗(yàn)在使用上,可以將PC上搭建一個(gè)mosquitto的mqtt
    發(fā)表于 10-31 06:52

    電能質(zhì)量在線監(jiān)測裝置數(shù)據(jù)存儲(chǔ)在本地服務(wù)器時(shí)有哪些注意事項(xiàng)?

    電能質(zhì)量在線監(jiān)測裝置數(shù)據(jù)存儲(chǔ)在本地服務(wù)器時(shí),需圍繞 架構(gòu)穩(wěn)定性、硬件可靠性、軟件適配性、數(shù)據(jù)安全性、長期運(yùn)維 五大核心維度構(gòu)建防護(hù)體系,避免因服務(wù)器故障、配置不當(dāng)或管理疏漏導(dǎo)致數(shù)據(jù)丟失、訪問中斷或合
    的頭像 發(fā)表于 10-30 10:06 ?333次閱讀

    使用paho-mqtt里例程連接服務(wù)器失敗怎么解決?

    【rt-thread】【paho-mqtt】最近由于學(xué)習(xí)需要,了解了關(guān)于rt-thread軟件包paho-mqtt的使用,但是使用官方例程時(shí),出現(xiàn)連接不上服務(wù)器的情況。具體報(bào)錯(cuò)如下: msh
    發(fā)表于 09-18 06:38

    mqtt服務(wù)器關(guān)機(jī),rt-thread5.1系統(tǒng)會(huì)死機(jī)怎么解決?

    無意間發(fā)現(xiàn)只要MQTT服務(wù)器掉線或者關(guān)機(jī),RT-THREAD5.1系統(tǒng)就會(huì)死機(jī),無論是WIFI鏈接或者網(wǎng)口鏈接,終端提示 Warning: There is no enough buffer
    發(fā)表于 09-09 08:00

    只要MQTT服務(wù)器掉線或者關(guān)機(jī),RT-THREAD5.1系統(tǒng)就會(huì)死機(jī),怎么解決?

    無意間發(fā)現(xiàn)只要MQTT服務(wù)器掉線或者關(guān)機(jī),RT-THREAD5.1系統(tǒng)就會(huì)死機(jī),無論是WIFI鏈接或者網(wǎng)口鏈接,終端提示 Warning: There is no enough buffer
    發(fā)表于 08-22 06:35

    搭建并優(yōu)化樹莓派《我的世界》服務(wù)器:全面指南!

    使用樹莓派托管《我的世界》服務(wù)器具有諸多優(yōu)勢,尤其適合那些希望搭建小型、經(jīng)濟(jì)高效且節(jié)能的服務(wù)器的用戶。無需額外硬件:無需強(qiáng)大的計(jì)算機(jī)或昂貴的服務(wù)器硬件即可運(yùn)行《我的世界》
    的頭像 發(fā)表于 08-11 16:08 ?1515次閱讀
    <b class='flag-5'>搭建</b>并優(yōu)化樹莓派《我的世界》<b class='flag-5'>服務(wù)器</b>:全面指南!

    完整指南:如何搭建樹莓派MQTT代理服務(wù)器?

    。MQTT通過TCP/IP運(yùn)行,使用代理服務(wù)器管理客戶端之間的消息分發(fā),允許設(shè)備訂閱特定主題,并且僅在發(fā)布相關(guān)數(shù)據(jù)時(shí)接收更新。其關(guān)鍵特性包括:低帶寬占用:非常適合
    的頭像 發(fā)表于 08-04 17:03 ?898次閱讀
    完整指南:如何<b class='flag-5'>搭建</b>樹莓派<b class='flag-5'>MQTT</b>代理<b class='flag-5'>服務(wù)器</b>?

    恒訊科技分析:云儲(chǔ)存服務(wù)器搭建教程

    搭建云存儲(chǔ)服務(wù)器是一個(gè)相對(duì)復(fù)雜但極具實(shí)用性的項(xiàng)目,以下是一個(gè)簡化的搭建教程,幫助你快速入門。 一、明確需求 在搭建云存儲(chǔ)服務(wù)器之前,首先需要
    的頭像 發(fā)表于 07-07 11:07 ?1297次閱讀

    HarmonyOS5云服務(wù)技術(shù)分享--ArkTS開發(fā)Node環(huán)境

    氣的方式探索這個(gè)功能,結(jié)尾還有實(shí)用總結(jié)和鼓勵(lì)彩蛋哦~? ? 一、HarmonyOS云函數(shù)開發(fā):核心能力與價(jià)值 HarmonyOS的云函數(shù)(Serverless)為開發(fā)者提供了??無服務(wù)器架構(gòu)??的便捷
    發(fā)表于 05-22 17:21

    新加坡服務(wù)器延遲大嗎?真相在這里#新加坡服務(wù)器 #服務(wù)器

    服務(wù)器
    jf_57681485
    發(fā)布于 :2025年04月18日 13:48:50

    存儲(chǔ)服務(wù)器怎么搭建?RAKsmart實(shí)戰(zhàn)指南

    搭建存儲(chǔ)服務(wù)器需兼顧硬件性能、數(shù)據(jù)冗余與安全訪問。以RAKsmart服務(wù)器為例,整體流程可分為五步:需求評(píng)估→硬件選型→RAID配置→系統(tǒng)部署→網(wǎng)絡(luò)設(shè)置。以下是小編對(duì)RAKsmart存儲(chǔ)服務(wù)器
    的頭像 發(fā)表于 04-01 10:09 ?1183次閱讀

    依托raksmart服務(wù)器在多種系統(tǒng)上本地部署deepseek注意事項(xiàng)

    在RAKsmart服務(wù)器本地部署DeepSeek時(shí),需根據(jù)不同的操作系統(tǒng)和環(huán)境做好全面適配。以下是關(guān)鍵注意事項(xiàng)及分步指南,主機(jī)推薦小編為您整理發(fā)布依托raksmart服務(wù)器在多種系統(tǒng)上本地
    的頭像 發(fā)表于 03-19 11:25 ?889次閱讀

    《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT協(xié)議連接阿里云服務(wù)器

    第五十五章 基于MQTT協(xié)議連接阿里云服務(wù)器 本章主要學(xué)習(xí)lwIP提供的MQTT協(xié)議文件使用,通過 MQTT 協(xié)議將設(shè)備連接到阿里云服務(wù)器
    發(fā)表于 03-18 09:22