當前位置:首頁 » 雲伺服器 » 搭建本地的mqtt伺服器

搭建本地的mqtt伺服器

發布時間: 2022-09-18 16:12:41

⑴ ubuntu mqtt 服務怎麼搭建

在Ubuntu下搭建MQTT伺服器",主要涉及到【MQTT】在Ubuntu下搭建MQTT伺服器方面的內容,對於【MQTT】在Ubuntu下搭建MQTT伺服器感興趣的同學可以參考一下。

⑵ 想問一下,如何用MQTT協議搭建一個物聯網空調的阿里雲伺服器,謝謝

MQTT推薦使用EMQ,來自國人開發的產品

⑶ 海為物聯雲HMI如何設置MQTT

首先需要搭建MQTT伺服器,然後搭建MySQL資料庫,然後使用海為組態寫段程序,最後配置客戶端驗證即可。具體可以參考內容 Haiwell(海為)HMI/CBOX/IPC MQTT 配置應用教程網頁鏈接

⑷ 怎麼搭建esp8266智能家居mqtt伺服器

存儲讀取到的ESP8266的信息,然後用print發送到串口上去。 如果你的串口監視器打開了,就可以看到信息了。

⑸ 在雲伺服器上搭建了mqtt,為什麼手機連接不上mqtt,要怎麼做才能連接上求求大神幫忙

MQTT協議是廣泛應用的物聯網協議,使用測試MQTT協議需要MQTT的代理。有兩種方法使用MQTT服務,一是租用現成的MQTT伺服器,如阿里雲,網路雲,華為雲等公用的雲平台提供的MQTT服務,使用公用的MQTT伺服器的好處是省事,但如果僅僅用於測試學習還需要注冊帳號,靈活性差些,有的平台還需要付費。另一方法是自己使用開源的MQTT組件來搭建。
MQTT伺服器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
這里介紹的是用輕量級的mosquitto開源項目來搭建一個屬於自己的MQTT伺服器。
第一步:需要安裝一台linux主機,這不多介紹,可以使用真機安裝也可以使用虛擬機安裝。如果僅僅是自己測試使用都可以。
第二步:下載mosquitto需要的依賴
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake

第三步:下載mosquitto並解壓,現在mosquitto官網最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:編譯
cd mosquitto-1.5.1/
make
make install
第五步:啟動mosquitto
./mosquitto -v
1535473957: mosquitto version 1.5.1 starting
1535473957: Using default config.
1535473957: Opening ipv4 listen socket on port 1883.
1535473957: Opening ipv6 listen socket on port 1883.
這時候mosquitto就會以默認的參數啟動。如果需要帶配置文件可以修改配置文件mosquitto.conf,
啟動時候加上參數 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto監聽的埠為1883.
這時候我們的MQTT伺服器就搭建好了。可找一個mqtt客戶端來測試一下。
先發布一個主題「home/garden/fountain/2」
內容是「hello world」
這時候在mosquitto會列印出下面的log
535474247: New connection from 192.168.1.105 on port 1883.
1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
1535474247: No will message specified.
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client

訂閱主題「home/garden/fountain/2」

可以看到收到了自己發布的消息。
用wireshark抓包
可以看到抓到了一個MQTT的publish的報文。

⑹ 如何搭建android推送mptt伺服器

近研究了一下Android推送,在網上搜到了很多種方式,覺得IBM的MQTT協議這種方式還是挺不錯的。
下面介紹一下搭建過程:
需要准備的工具如下:
(1)、下載Mosquitto(MQTT的代理,也可以用IBM的ISMB)
http://mosquitto.org/download/
我下載的是mosquitto-1.1.2-install-win32.exe,根據自己的需要下載,不安裝這個推送不了消息。
(2)、下載AndroidPushNotificationsDemo
https://github.com/toku/Androi ... /archive/master.zip

(3)、下載PhpMQTTClient
https://github.com/toku/PhpMQTTClient/archive/master.zip
將PHPMQTTClient部署到PHP伺服器上,運行,打開mosquitto安裝目錄的mosquitto.exe

⑺ mqtt怎麼在windows上搭建

windows的平台 由於有32位的 也有64位的 所以 去下一個和自己的電腦 相區配的。
下載後直接雙擊安裝就行 之後 進入安裝目錄 最好用命令行的方式 啟動mosquitto.exe 然後就是 編寫 android 客戶端代碼 mqtt 是訂閱/發布的方式 eoeandroid 安卓開發社區上有詳細的教程,你自己可以找一下。。

⑻ 3. MQTT簡要介紹

——

[1.MQTT項目工程](https://github.com/LiamBindle/MQTT-C)

[2.MQTT API說明文檔](https://liambindle.ca/MQTT-C/group__api.html)

[3.MQTT協議中文版](https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introction.html)

MQTT是一個客戶端服務端架構的發布/訂閱模式的消息傳輸協議。它的設計思想是輕巧、開放、簡單、規范,易於實現。這些特點使得它對很多場景來說都是很好的選擇,特別是對於受限的環境如機器與機器的通信(M2M)以及物聯網環境(IoT)。

MQTT協議通過交換預定義的MQTT控制報文來通信。

報文格式: 固定包頭+可變包頭+payload。

固定包頭: 由兩個位元組組成

                byte1 高四位表示控制報文的類型,低四位表示控制報文類型的標志位。

                byte2表示剩餘長度,包括可變報頭和負載的數據。剩餘長度不包括用於編碼剩餘長度欄位本身的位元組數。

可變包頭:

                某些MQTT控制報文包含一個可變報頭部分。它在固定報頭和負載之間。可變報頭的內容根據報文類型的不同而不同。可變報頭的報文標(Packet Identifier)欄位存在於在多個類型的報文里。

有效載荷:

                對於PUBLISH來說有效載荷就是應用消息。

——1. 網路建立連接後,客戶端發送的第一個報文必須是CONNECT報文

——2. 客戶端只能發送一次CONNECT 報文,發送兩次會當作協議違規處理,並斷開連接。

——3. 有效載荷包括:客戶端唯一標識符,will主題,will消息,用戶名和密碼。

——4.可變包頭:協議名(protocol name)+協議級別(protocol level)+連接標志(connect flags)+保持連接(keep alive)。

——5. 協議名: MQTT的UTF-8編碼的字元串。(MSB+LSB +MQTT 六個位元組)

——6. 協議級別:一個位元組

——7. 連接標志:一個位元組,包含一些用於指定MQTT連接行為的參數。同時還指出有效載荷中的欄位是否存在。服務端必須驗證CONNECT控制報文的保留標志位(第0位)是否為0,如果不為0必須斷開客戶端連接。

——8. 清理會話:byte8 的bit1位標志。

        這個二進制位指定了會話狀態的處理方式。客戶端和服務端可以保存會話狀態,以支持跨網路連接的可靠消息傳輸。這個標志位用於控

       制會話狀態的生存時間。

        標志設置為0:服務端必須基於當前會話(使用客戶端標識符識別)的狀態恢復與客戶端的通信。

        標志設置為1:客戶端和服務端必須丟棄之前的任何會話並開始一個新的會話。會話僅持續和網路連接同樣長的時間。

——9. 遺囑標志 WILL FLAG: byte8的bit2位標志。

        遺囑標志(Will Flag)被設置為1,表示如果連接請求被接受了,遺囑(Will Message)消息必須被存儲在服務端並且與這個網路連接關聯。之後網路連接關閉時,服務端必須發布這個遺囑消息,除非服務端收到DISCONNECT報文時刪除了這個遺囑消息。

服務端發送CONNACK報文響應從客戶端收到的CONNECT報文。服務端發送給客戶端的第一個報文必須是CONNACK。

如果客戶端在合理的時間內沒有收到服務端的CONNACK報文,客戶端應該關閉網路連接。合理 的時間取決於應用的類型和通信基礎設施。

CONNACK報文沒有有效載荷。

PUBLISH控制報文是指從客戶端向服務端或者服務端向客戶端傳輸一個應用消息。

固定包頭:

注意byte1的bit3為重發標志DUP。

如果DUP標志被設置為0,表示這是客戶端或服務端第一次請求發送這個PUBLISH報文。如果DUP標志被設置為1,表示這可能是一個早前報文請求的重發。

服務端發送PUBLISH報文給訂閱者時,收到(入站)的PUBLISH報文的DUP標志的值不會被傳播。發送(出站)的PUBLISH報文與收到(入站)的PUBLISH報文中的DUP標志是獨立設置的,它的值必須單獨的根據發送(出站)的PUBLISH報文是否是一個重發來確定。

可變包頭:

主題名 :topic name

報文標識符 :packet identitfier。

有效載荷 :有效載荷包含將被發布的應用消息。數據的內容和格式是應用特定的。有效載荷的長度這樣計算:用固定報頭中的剩餘長度欄位的值減去可變報頭的長度。包含零長度有效載荷的PUBLISH報文是合法的。

響應:PUBLISH報文的接收者必須按照根據PUBLISH報文中的QoS等級發送響應。

PUBACK報文是對QoS 1等級的PUBLISH報文的響應。

PUBACK報文沒有有效載荷。

PUBREC報文是對QoS等級2的PUBLISH報文的響應。它是QoS 2等級協議交換的第二個報文。

PUBREC報文沒有有效載荷。

PUBREL報文是對PUBREC報文的響應。它是QoS 2等級協議交換的第三個報文。

PUBREL報文沒有有效載荷。

PUBCOMP報文是對PUBREL報文的響應。它是QoS 2等級協議交換的第四個也是最後一個報文。

PUBCOMP報文沒有有效載荷。

客戶端向服務端發送 SUBSCRIBE 報文用於創建一個或多個訂閱。每個訂閱注冊客戶端關心的一個或多個主題。為了將應用消息轉發給與那些訂閱匹配的主題,服務端發送PUBLISH報文給客戶端。SUBSCRIBE報文也(為每個訂閱)指定了最大的QoS等級,服務端根據這個發送應用消息給客戶端。

有效載荷:

SUBSCRIBE報文的有效載荷包含了一個主題過濾器列表,它們表示客戶端想要訂閱的主題。SUBSCRIBE報文的有效載荷必須包含至少一對主題過濾器 和 QoS等級欄位組合。沒有有效載荷的SUBSCRIBE報文是違反協議的。

響應:

服務端收到客戶端發送的一個SUBSCRIBE報文時,必須使用SUBACK報文響應,SUBACK報文必須和等待確認的SUBSCRIBE報文有相同的報文標識符。

服務端發送SUBACK報文給客戶端,用於確認它已收到並且正在處理SUBSCRIBE報文。SUBACK報文包含一個返回碼清單,它們指定了SUBSCRIBE請求的每個訂閱被授予的最大QoS等級。

有效載荷:

有效載荷包含一個返回碼清單。每個返回碼對應等待確認的SUBSCRIBE報文中的一個主題過濾器。返回碼的順序必須和SUBSCRIBE報文中主題過濾器的順序相同。

客戶端發送UNSUBSCRIBE報文給服務端,用於取消訂閱主題。

有效載荷 :

UNSUBSCRIBE報文的有效載荷包含客戶端想要取消訂閱的主題過濾器列表。

UNSUBSCRIBE報文中的主題過濾器必須是連續打包的、按照定義的UTF-8編碼字元串 

UNSUBSCRIBE報文的有效載荷必須至少包含一個消息過濾器。沒有有效載荷的UNSUBSCRIBE報文是違反協議的。

響應:

UNSUBSCRIBE報文提供的主題過濾器(無論是否包含通配符)必須與服務端持有的這個客 戶端的當前主題過濾器集合逐個字元比較。如果有任何過濾器完全匹配,那麼它(服務端)自己的訂閱將被刪除,否則不會有進一步的處理。

如果服務端刪除了一個訂閱:

——它必須停止分發任何新消息給這個客戶端 []。

——它必須完成分發任何已經開始往客戶端發送的QoS 1和QoS 2的消息 []。

——它可以繼續發送任何現存的准備分發給客戶端的緩存消息。

            服務端必須發送UNSUBACK報文響應客戶端的UNSUBSCRIBE請求。UNSUBACK報文必須包含和UNSUBSCRIBE報文相同的報文標識符 。即使沒有刪除任何主題訂閱,服務端也必須發送一個UNSUBACK響應 。

            如果服務端收到包含多個主題過濾器的UNSUBSCRIBE報文,它必須如同收到了一系列的多個UNSUBSCRIBE報文一樣處理那個報文,除了將它們的響應合並到一個單獨的UNSUBACK報文外。 

服務端發送UNSUBACK報文給客戶端用於確認收到UNSUBSCRIBE報文。

UNSUBACK報文沒有有效載荷。

客戶端發送PINGREQ報文給服務端的。用於:

1. 在沒有任何其它控制報文從客戶端發給服務的時,告知服務端客戶端還活著。

2. 請求服務端發送 響應確認它還活著。

3. 使用網路以確認網路連接沒有斷開。

保持連接(Keep Alive)處理中用到這個報文。

——PINGREQ報文沒有可變報頭。

——PINGREQ報文沒有有效載荷。

響應:

服務端必須發送 PINGRESP報文響應客戶端的PINGREQ報文。

服務端發送PINGRESP報文響應客戶端的PINGREQ報文。表示服務端還活著。

保持連接(Keep Alive)處理中用到這個報文。

PINGRESP報文沒有可變報頭。

PINGRESP報文沒有有效載荷。

DISCONNECT報文是客戶端發給服務端的最後一個控制報文。表示客戶端正常斷開連接。

DISCONNECT報文沒有可變報頭。

DISCONNECT報文沒有有效載荷。

響應:

客戶端發送DISCONNECT報文之後:

—— 必須關閉網路連接 [MQTT-3.14.4-1]。

——不能通過那個網路連接再發送任何控制報文。

服務端在收到DISCONNECT報文時:

——必須丟棄任何與當前連接關聯的未發布的遺囑消息。

——應該關閉網路連接,如果客戶端 還沒有這么做。

為了提供服務質量保證,客戶端和服務端有必要存儲會話狀態。在整個會話期間,客戶端和服務端都必須存儲會話狀態 。會話必須至少持續和它的活躍網路連接同樣長的時間。服務端的保留消息不是會話狀態的組成部分。服務端應該保留那種消息直到客戶端刪除它。

MQTT協議要求基礎傳輸層能夠提供有序的、可靠的、雙向傳輸(從客戶端到服務端 和從服務端到客戶端)的位元組流。

無連接的網路傳輸協議如UDP是不支持的,因為他們可能會丟失數據包或對數據包重排序。

MQTT按照這里定義的服務質量 (QoS) 等級分發應用消息。分發協議是對稱的,在下面的描述中,客戶端和服務端既可以是發送者也可以是接收者。分發協議關注的是從單個發送者到單個接收者的應用消息。服務端分發應用消息給多個客戶端時,每個客戶端獨立處理。分發給客戶端的出站應用消息和入站應用消息的QoS等級可能是不同的。

qos0:最多分發一次

qos1:至少分發一次

qos2:僅分發一次

客戶端設置清理會話(CleanSession)標志為0重連時,客戶端和服務端必須使用原始的報文標識符重發任何未確認的PUBLISH報文(如果QoS>0)和PUBREL報文 [MQTT-4.4.0-1]。這是唯一要求客戶端或服務端重發消息的情況。

服務端接管入站應用消息的所有權時,它必須將消息添加到訂閱匹配的客戶端的會話狀態。正常情況下,客戶端收到發送給它的訂閱的消息。客戶端也可能收到不是與它的訂閱精確匹配的消息。如果服務端自動給客戶端分配了一個訂閱,可能發生這種情況。正在處理UBSUBSCRIBE請求時也可能收到消息。客戶端必須按照可用的服務質量(QoS)規則確認它收到的任何PUBLISH報文,不管它選擇是否處理報文包含的應用消息 。

實現本章定義的協議流程時,客戶端必須遵循下列規則:

重發任何之前的PUBLISH報文時,必須按原始PUBLISH報文的發送順序重發(適用於QoS 1和QoS 2消息)[MQTT-4.6.0-1]。

——必須按照對應的PUBLISH報文的順序發送PUBACK報文(QoS 1消息)。

——必須按照對應的PUBLISH報文的順序發送PUBREC報文(QoS 2消息。

——必須按照對應的PUBREC報文的順序發送PUBREL報文(QoS 2消息)。

服務端必須默認認為每個主題都是有序的。它可以提供一個管理功能或其它機制,以允許將一個或多個主題當作是無序的 。

服務端處理發送給有序主題的消息時,必須按照上面的規則將消息分發給每個訂閱者。此外,它必須按照從客戶端收到的順序發送PUBLISH報文給消費者(對相同的主題和QoS)。

斜杠(『/』 U+002F)用於分割主題的每個層級,為主題名提供一個分層結構.

數字標志(『#』 U+0023)是用於匹配主題中任意層級的通配符。

加號 (『+』 U+002B) 是只能用於單個主題層級匹配的通配符。

服務端不能將 $ 字元開頭的主題名匹配通配符 (#或+) 開頭的主題過濾器.

$SYS/ 被廣泛用作包含伺服器特定信息或控制介面的主題的前綴。

應用不能使用 $ 字元開頭的主題。

訂閱 「#」 的客戶端不會收到任何發布到以 「$」 開頭主題的消息。

訂閱 「+/monitor/Clients」 的客戶端不會收到任何發布到 「$SYS/monitor/Clients」 的消息。

訂閱 「$SYS/#」 的客戶端會收到發布到以 「$SYS/」 開頭主題的消息。

訂閱 「$SYS/monitor/+」 的客戶端會收到發布到 「$SYS/monitor/Clients」 主題的消息。

如果客戶端想同時接受以 「$SYS/」 開頭主題的消息和不以 $ 開頭主題的消息,它需要同

時訂閱 「#」 和 「「$SYS/#」。

除非另有說明,如果服務端或客戶端遇到了協議違規的行為,它必須關閉傳輸這個協議違規控制報文的網路連接.

MQTT方案通常部署在不安全的通信環境中。在這種情況下,協議實現通常需要提供這些機制:

——用戶和設備身份認證

——服務端資源訪問授權

——MQTT控制報文和內嵌應用數據的完整性校驗

——MQTT控制報文和內嵌應用數據的隱私控制

作為傳輸層協議,MQTT僅關注消息傳輸,提供合適的安全功能是實現者的責任。使用TLS[RFC5246] 是比較普遍的選擇。

廣泛採用高級加密標准 [AES] 數據加密標准 [DES] 。

推薦使用為受限的低端設備特別優化過的輕量級加密國際標准 ISO 29192 [ISO29192] 。

如果MQTT在WebSocket [RFC6455] 連接上傳輸,必須滿足下面的條件:

——MQTT控制報文必須使用WebSocket二進制數據幀發送。如果收到任何其它類型的數據幀,接收者必須關閉網路連接 。

——單個WebSocket數據幀可以包含多個或者部分MQTT報文。接收者不能假設MQTT控制報文按WebSocket幀邊界對齊 。

——客戶端必須將字元串 mqtt 包含在它提供的WebSocket子協議列表裡 。

——服務端選擇和返回的WebSocket子協議名必須是  。

——用於連接客戶端和伺服器的WebSocket URI對MQTT協議沒有任何影響。

MQTT規范定義了MQTT客戶端實現和MQTT服務端實現的一致性要求

MQTT實現可以同時是MQTT客戶端和MQTT服務端。接受入站連接和建立到其它服務端的出站連接的服務端必須同時符合MQTT客戶端和MQTT服務端的要求 。

為了與任何其它的一致性實現交互操作,一致性實現不能要求使用在本規范之外定義的任何擴展 。

附錄:

控制報文類型

byte1:標志位flags:

⑼ 如何設置mqtt伺服器的賬號密碼

1、在這里下載Apollo伺服器,下載後解壓,然後運行apache-apollo-1.6\bin\apollo.cmd,輸入create mybroker(名字任意取,這里是根據官網介紹的來取的)創建伺服器實例,伺服器實例包含了所有的配置,運行時數據等,並且和一個伺服器進程關聯。
2、create mybroker之後會在bin目錄下生成mybroker文件夾,裡麵包含有很多信息,其中etc\apollo.xml文件下是配置伺服器信息的文件,etc\users.properties文件包含連接MQTT伺服器時用到的用戶名和密碼,後面會介紹,可以修改原始的admin=password,可以接著換行添加新的用戶名密碼。
3、打開cmd,運行…apache-apollo-1.6\bin\mybroker\bin\apollo-broker.cmd run 開啟伺服器,可以在瀏覽器中輸入http://127.0.0.1:61680/查看是否安裝成功,該界面展示了topic,連接數等很多信息。
經過上面的簡單步驟,伺服器基本上就已經完成,下一篇將介紹Android客戶端的編寫和注意事項。
客戶端使用的API,開始我使用的是mqtt-client,使用過後發現問題百出,不能很好的滿足要求,後來使用了官方推薦的Eclipse Paho

⑽ mqtt 伺服器搭建需要用到java

最近公司做的項目中有用到消息推送,經過多方面的篩選之後確定了使用MQTT協議,相對於XMPP,MQTT更加輕量級,並且佔用用戶很少的帶寬。
MQTT是IBM推出的一種針對移動終端設備的基於TCP/IP的發布/預訂協議,可以連接大量的遠程感測器和控制設備。
MQTT的官網見:http://mqtt.org/。其中http://mqtt.org/software裡面提供了官方推薦的各種伺服器和客戶端使用的各種語言版本的API。
下面以伺服器Apollo 1.6為例,之前嘗試過使用ActiveMQ,效果很不理想,只能實現伺服器和客戶端一對一的通信,從官網上了解到Apollo屬於activemq的一個子工程。先不管這些了,言歸正傳,以下在windows環境下。
1、在這里下載Apollo伺服器,下載後解壓,然後運行apache-apollo-1.6\bin\apollo.cmd,輸入create mybroker(名字任意取,這里是根據官網介紹的來取的)創建伺服器實例,伺服器實例包含了所有的配置,運行時數據等,並且和一個伺服器進程關聯。
2、create mybroker之後會在bin目錄下生成mybroker文件夾,裡麵包含有很多信息,其中etc\apollo.xml文件下是配置伺服器信息的文件,etc\users.properties文件包含連接MQTT伺服器時用到的用戶名和密碼,後面會介紹,可以修改原始的admin=password,可以接著換行添加新的用戶名密碼。
3、打開cmd,運行…apache-apollo-1.6\bin\mybroker\bin\apollo-broker.cmd run 開啟伺服器,可以在瀏覽器中輸入http://127.0.0.1:61680/查看是否安裝成功,該界面展示了topic,連接數等很多信息。
經過上面的簡單步驟,伺服器基本上就已經完成,下一篇將介紹Android客戶端的編寫和注意事項。
客戶端使用的API,開始我使用的是mqtt-client,使用過後發現問題百出,不能很好的滿足要求,後來使用了官方推薦的Eclipse Paho,下面開始客戶端代碼的編寫,為了方便測試這里有android和j2se兩個工程:
1、新建android工程MQTTClient
2、MainActivity代碼如下:

熱點內容
rft屏幕代碼編譯 發布:2025-01-11 12:54:01 瀏覽:741
安卓手機怎麼清除後台 發布:2025-01-11 12:53:14 瀏覽:803
sgm郵箱伺服器地址 發布:2025-01-11 12:46:03 瀏覽:882
編程軟體基礎培訓 發布:2025-01-11 12:20:20 瀏覽:287
imeet網站伺服器地址 發布:2025-01-11 12:15:35 瀏覽:331
ps緩存時間 發布:2025-01-11 11:55:36 瀏覽:865
雲伺服器容災 發布:2025-01-11 11:51:40 瀏覽:682
phparraysplice 發布:2025-01-11 11:51:40 瀏覽:320
android學習源碼 發布:2025-01-11 11:26:23 瀏覽:413
伺服器都壞了如何恢復 發布:2025-01-11 11:24:04 瀏覽:354