最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MQTT Client實現(xiàn)消息推送功能的方法詳解

 更新時間:2023年05月31日 09:05:30   作者:蒙奇·D·伊麗莎白  
這篇文章主要介紹了MQTT Client實現(xiàn)消息推送功能的方法,結(jié)合實例形式詳細分析了MQTT Client實現(xiàn)消息推送的基本原理、實現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下

一、MQTT

二、MQTT C Client實戰(zhàn)

了解更多可以閱讀《MQTT C Client for Posix and Windows》一文,下面根據(jù)官網(wǎng)資料,摘錄了幾個C語言實現(xiàn)MQTT的小DEMO。

MQTT使用起來也十分容易,基本上就那四五個函數(shù):MQTTClient_create(創(chuàng)建客戶端)、MQTTClient_connect(連接服務(wù)端)、MQTTClient_publishMessage(客戶端->服務(wù)端發(fā)送消息)、MQTTClient_subscribe(客戶端訂閱某個主題)等等。其中,很多異步回調(diào)函數(shù),需要自己去實現(xiàn),如,

MQTTAsync_setCallbacks(mqtt->_client, mqtt->_client, connlost, msgarrvd, NULL);

MQTTAsync_setCallbacks中,

  • connlost函數(shù)指針,是當MQTT意外斷開鏈接時會回調(diào)的函數(shù),由自己實現(xiàn);
  • msgarrvd函數(shù)指針,是當服務(wù)器有消息推送回來時,客戶端在此處接受服務(wù)端消息內(nèi)容。

另外,就是一些函數(shù)執(zhí)行是否成功的回調(diào)函數(shù),C語言封裝回調(diào)之后,就是這么寫法,看起來有些變扭。有興趣的可以看《淺談C/C++回調(diào)函數(shù)(Callback)& 函數(shù)指針》文章,再了解以下回調(diào)函數(shù)。

mqtt->_conn_opts.onSuccess = onConnect;
mqtt->_conn_opts.onFailure = onConnectFailure;

最后,不得不說的就是,MQTT有些發(fā)送或者是訂閱的內(nèi)容時(某些函數(shù)中),在編程最好將參數(shù)中傳進來的值在內(nèi)存中拷貝一份再操作,筆者當時開發(fā)時,就是因為這樣的問題,折騰了較長時間,后來在wireshark中發(fā)現(xiàn)數(shù)據(jù)包中根本沒有內(nèi)容,才知道是由于函數(shù)參數(shù)是指針形式,直接在異步中使用可能會發(fā)生一些未知的錯誤。

參考文檔:

https://yq.aliyun.com/articles/521549?spm=5176.10695662.1996646101.searchclickresult.39f82372vfl8ed

三、MQTT client for Node.js

Installation

#You can install it as dependency with npm.
$?#?save?into?package.json?dependencies?with?-S?
$?npm?install?aliyun-iot-mqtt?-S

Usage

Aliyun IoT Hub mqtt client with authrozied by productKey & deviceName & deviceSecret.

GET Data

const?Mqtt?=?require('aliyun-iot-mqtt');
const?client?=?Mqtt.getAliyunIotMqttClient({
????productKey:?"",
????deviceName:?"",
????deviceSecret:?"",
????regionId:?"cn-shanghai",
????keepalive:120?//?mqtt?options
});
client.on('connect',?function()?{
????console.log("connect")
})
client.end(function?(){
????console.log("end")
})

TLS mqtts

aliyun_iot_root.cer

var?trustedCA?=?fs.readFileSync(path.join(__dirname,?'/aliyun_iot_root.cer'))
var?options?=?{
????productKey:?"",
????deviceName:?"",
????deviceSecret:?"",
????regionId:?"cn-shanghai",
????protocol:?'mqtts',
????ca:?trustedCA,
????keepalive:120?//?mqtt?options
};

Subscribe Topic

client.subscribe(topic)

Publish Message

client.publish(topic,?'Hello?mqtt')
client.publish(topic,?'Hello?mqtt',?{?qos:?1?})

Receive Message

client.on('message',?function(topic,?message)?{
????console.log(topic+","?+?message.toString())
})

補充:nodejs發(fā)送訂閱mqtt完整示例:

var mqtt = require('mqtt');
var opt={
    port:1883
}
var client=mqtt.connect('tcp://10.66.28.51',opt);
client.on('connect',function(){
    console.log("mqtt已連接");
    // client.publish('wks/cim/ASPY/#','需要發(fā)送的信息');
    client.subscribe('wks/cim/ASPY/#')
})
client.on('message',function(topic,msg){
    console.log('收到'+topic+"訊息:"+msg.toString());
})

參考文檔:

https://www.npmjs.com/package/aliyun-iot-mqtt

相關(guān)文章

  • Node.js數(shù)據(jù)庫操作之連接MySQL數(shù)據(jù)庫(一)

    Node.js數(shù)據(jù)庫操作之連接MySQL數(shù)據(jù)庫(一)

    前一陣在做項目的時候,需要通過nodejs連接到MySQL數(shù)據(jù)庫,于是簡單地學習了一下MySQL這個庫,分享一些學習心得給大家,希望對大家有幫助。下面這篇文章主要介紹了Node.js數(shù)據(jù)庫操作之連接MySQL數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下。
    2017-03-03
  • nodejs使用Sequelize框架操作數(shù)據(jù)庫的實現(xiàn)

    nodejs使用Sequelize框架操作數(shù)據(jù)庫的實現(xiàn)

    這篇文章主要介紹了nodejs使用Sequelize框架操作數(shù)據(jù)庫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Node.js引入UIBootstrap的方法示例

    Node.js引入UIBootstrap的方法示例

    這篇文章主要介紹了Node.js引入UIBootstrap的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 使用express+multer實現(xiàn)node中的圖片上傳功能

    使用express+multer實現(xiàn)node中的圖片上傳功能

    這篇文章主要介紹了使用express+multer實現(xiàn)node中的圖片上傳功能,需要的朋友可以參考下
    2018-02-02
  • NodeJS?基于?Dapr?構(gòu)建云原生微服務(wù)應(yīng)用快速入門教程

    NodeJS?基于?Dapr?構(gòu)建云原生微服務(wù)應(yīng)用快速入門教程

    Dapr?是一個可移植的、事件驅(qū)動的運行時,它使任何開發(fā)人員能夠輕松構(gòu)建出彈性的、無狀態(tài)和有狀態(tài)的應(yīng)用程序,并可運行在云平臺或邊緣計算中,它同時也支持多種編程語言和開發(fā)框架,本文重點介紹NodeJS云原生微服務(wù)應(yīng)用,感興趣的朋友一起看看吧
    2022-07-07
  • Node.js的HTTP模塊、URL模塊與supervisor工具介紹

    Node.js的HTTP模塊、URL模塊與supervisor工具介紹

    這篇文章介紹了Node.js的HTTP模塊、URL模塊與supervisor工具,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式

    利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式

    這篇文章主要介紹了利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • nvm無法安裝低版本nodejs解決方案

    nvm無法安裝低版本nodejs解決方案

    因nvm升級后無法安裝低版本Node.js,下面這篇文章主要給大家介紹了關(guān)于nvm無法安裝低版本nodejs的解決方案,關(guān)鍵步驟包括卸載舊版nvm、下載低版本安裝包及配置環(huán)境變量,需要的朋友可以參考下
    2025-05-05
  • NodeJS如何優(yōu)雅的實現(xiàn)Sleep休眠

    NodeJS如何優(yōu)雅的實現(xiàn)Sleep休眠

    這篇文章主要介紹了NodeJS如何優(yōu)雅的實現(xiàn)Sleep休眠問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • 淺談Node.js輕量級Web框架Express4.x使用指南

    淺談Node.js輕量級Web框架Express4.x使用指南

    本篇文章主要介紹了淺談Node.js輕量級Web框架Express4.x使用指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論

嫩江县| 富阳市| 佳木斯市| 灵璧县| 得荣县| 永顺县| 夏河县| 宜君县| 凉城县| 连州市| 府谷县| 永吉县| 富川| 渝中区| 视频| 定州市| 肇东市| 满洲里市| 堆龙德庆县| 霞浦县| 郧西县| 荣昌县| 南雄市| 梓潼县| 郎溪县| 林甸县| 白城市| 根河市| 视频| 麻栗坡县| 牟定县| 蓬安县| 惠东县| 沂南县| 枣庄市| 瓦房店市| 隆尧县| 盐源县| 长春市| 崇州市| 克什克腾旗|