Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 8488|Válasz: 0

Több EMQTT tudáspont

[Linket másol]
Közzétéve 2019. 02. 15. 10:25:09 | | |
Mielőtt elkezdenék a szöveget, köszönetet kell mondanom a netifelhasználónak, "Xiaolongnak" és a emqtt.io csoport netilakóinak a segítségükért, most kezdtem el használni az MQTT-t. Sok mindent nem értek, amikor a emqtt.io csoportban a megoldásról kérdeztem, "Xiaolong" részletes magyarázatot adott néhány MQTT tudáspontról és megoldásokat kínált, nagyon köszönöm. Úgy gondolom, hogy néhány dolog, amit benne említettek, még mindig nagyon hasznosak kezdőknek, ezért itt van egy összefoglaló a "Xiaolong"-nal folytatott beszélgetési előzményemről a hivatkozásoknak.

1. kérdés: Ha az MCU korlátozott gyorsítótárral és korlátozott feldolgozási kapacitással rendelkezik, akkor lehetetlen egyszerre üzeneteket küldeni, hogyan lehet ebben az esetben az MQTT-n keresztül üzeneteket publikálni?
Először összeállítsd a közzétételi protokoll fejlécét, írd meg benne a hasznos raher hosszát, küldd ki a TCP-n keresztül, majd lassan küldd el a hasznos terhet. Ha nem tudod megkapni a teljes hasznos teher hosszát, ez nehéz. Mivel egy közzétételi protokoll jelentést küldesz, miután a szerver elolvassa a fejben a hasznos raher hosszát, addig olvas, amíg el nem éri a szükséges hosszt, majd a közzétételt számolják. Ezért először ellenőrizd a közzétett tartalom hosszát, majd csoportosítsd a közzétételi csomagfejléceget, töltsd ki a payload hosszát, tcp:send(head), majd egyenként elküldd a hasznos csomagot, például 1k-t egyszerre, vagy küldd el az adatokat a normál tcp szerint, és elküldd teljesen, még akkor is, ha a közzététel véget ér. A következő küldés a TCP réteghez tartozik, és nem kell közbeavatkoznod. Ha a TCP rétegben a küldés meghibásodik, gond kell lennie a socket-tel, a kapcsolat megszakad, újra kell csatlakozni az MQTT szerverhez, ha még nem fejeződött be, akkor a szerver ülés is véget ér, vagyis a szerver nem kapta meg az adatokat. Csatlakozni újra, újra kell küldened az üzenetet, amíg meg van kapcsolva, újra kell csatlakoznod, hogy szeretnéd-e újra elküldeni az adatokat, attól függ, hogy elmentetted-e az előző adatokat. Ha az üzenet fontos, használhatod qos=1 vagy 2 értéket, hogy a szerver megkapja az üzenetet, qos=1 egy oda-vissza utazást igényel, qos=2 négy oda-vissza utazást, qos=0 nagyon egyszerű, amíg elküldöd, nem számít.

2. kérdés: Van sok nyílt forráskódú forrás az MQTT-hez?

A hiperlink bejelentkezés látható.Sok ilyen

3. kérdés: Miért nem ad az MQTT általában nem tartósságfüggvényeket?

Az MQTT protokollt az eszköz online kialakítása szerint tervezték, és az adatokat memóriában tárolják

4. kérdés: Fogyasztja-e az MQTT memóriát?

Az MQTT memóriább, és az emqtt mérési adatai: 38W, a memória 14G-ot, CPU 15%-ot

5. kérdés: Mi a kapcsolat a session és az ügyfél között?

Például, ha van egy tábla, kliensként indít egy MQTT kapcsolati kérelmet, hogy csatlakozzon az MQTT szerverhez, például EMQTT szolgáltatás, és miután az EMQTT szerver megkapja a kártya csatlakozási kérelmét, TCP kapcsolatot hoz létre a TCP rétegen lévő panellel, és az EMQTT-n belül egy folyamat generálódik a kommunikációra ezzel a panelrel, és egy folyamat is generálódik, amit sessionnek hívnak. Ez a sessoin egy olyan téma, amely a board előfizetésének kezelésére specializálódott, és más testületek is elküldik a hozzá tartozó ülésszakra, ha közzéteszik az adott tábla érdeklődési körét érdeklő témát, ha az ülés megkapja az előfizetett témát, és megállapítja, hogy az ügyfél még életben van, akkor az adatokat TCP-n keresztül továbbítja a fórumhoz, ha kiderül, hogy az ügyfél már nincs ott, vagyis a tábla és a szerver meghibásodott. Ezután a szekció először elmenti a kapott előfizetéses témát a szekcióban, és legközelebb, amikor a tábla csatlakozik, és cleansession=false, akkor a szekció nem lesz tisztázva, és amikor csatlakozik, a korábban kapott előfizetési üzenet érkezik a táblára, ami valószínűleg ezt is jelenti.

6. kérdés: Hogyan tudja az emqtt, hogy a csatlakoztatott kliens ugyanaz?

Csatlakozáskor be kell állítani egy kliens azonosítót, ezt az ID nem lehet beállítani, ha nem állított be, akkor automatikusan egyedi azonosítót generál az emqtt szerver oldalon, ha sessiont akarsz használni, egyedi azonosítóval rendelkezel, használhatod az IMEI-t. Ha offline üzeneteket kell fogadnod, meghatározott azonosítót kell használnod.

7. kérdés: Módosítható-e az emqtt ülésideje?

Megváltoztathatod a kezelés idejét, most 48 óra, egy hétre is módosíthatod, ha tartós akarod, attól tartok, az emqtt nem megfelelő.

8. kérdés: Az emqtt hozzáférési engedélye a konfigurációs fájlban van írva?

etc/acl.config

9. kérdés: Mi az emqtt eloszlása?

A terjesztés egyszerűen azt jelenti, hogy több szerveredet összekapcsolod, bármelyiket vagy többet, amíg nem mind romlottak, az emqtt normálisan fut. Az EMQTT adatokat több csomópont osztja meg, és ha probléma van egy csomóponttal, az adatok nem vesznek el, hanem a csomóponton lévő munkameneti adatok.









Előző:Az első ismerkedés az EMQX (EMQTTD) üzenetsorral
Következő:jQuery tanulmányi jegyzetek
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com