Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 8488|Svar: 0

Flere EMQTT-videnspunkter

[Kopier link]
Opslået på 15/02/2019 10.25.09 | | |
Før jeg begynder på teksten, skal jeg takke netizen "Xiaolong" og netizens i emqtt.io-gruppen for deres hjælp, jeg er lige begyndt at bruge MQTT. Der er mange ting, jeg ikke forstår, da jeg spurgte om løsningen i emqtt.io-gruppen, gav "Xiaolong" mig en detaljeret forklaring af nogle MQTT-videnspunkter og gav løsninger, mange tak. Jeg synes, nogle af de ting, der nævnes i den, stadig er meget nyttige for begyndere, så her er et resumé af min chathistorik med "Xiaolong" til din reference.

Spørgsmål 1: Hvis MCU'en har begrænset cache og begrænset processorkraft, er det umuligt at sende beskeder på én gang, hvordan publicerer man beskeder via MQTT i dette tilfælde?
Først samler du headeren for publiceringsprotokollen, skriver længden af payloaden i den, sender den ud via TCP, og sender derefter payloaden lidt efter lidt. Hvis du ikke kan få den samlede nyttelastlængde, er det svært. Fordi du sender en publish protocol-rapport, vil serveren, efter at have læst payloadens længde i hovedet, fortsætte med at læse, indtil den når den krævede længde, og så tælles publiceringen. Derfor er dit behov først at bekræfte længden af det indhold, du udgiver, derefter gruppere publiceringspakkeheaderen, udfylde payload-længden, tcp:send(head), og derefter sende payloaden én ad gangen, for eksempel 1k ad gangen, eller sende dataene efter den normale TCP og sende det hele vejen, selvom publiceringen er slut. Den næste afsendelse tilhører TCP-laget, og du behøver ikke gribe ind. Hvis send fejler i TCP-laget, må der være et problem med socketen, forbindelsen er brudt, du skal genoprette forbindelsen til MQTT-serveren, hvis den ikke er færdig, vil serversessionen også slutte, det vil sige, serveren har ikke modtaget dataene. Forbind igen, du skal sende beskeden igen, så længe den er afbrudt, skal du genoprette forbindelsen, og om du vil sende dataene igen, afhænger af, om du har gemt de tidligere data. Hvis beskeden er vigtig, kan du også bruge qos=1 eller 2 for at sikre, at serveren modtager beskeden, qos=1 kræver én rundtur, qos=2 kræver fire rundture, qos=0 er meget simpelt, så længe du sender den ud, er det ligegyldigt.

Spørgsmål 2: Findes der mange open source-ressourcer til MQTT?

Hyperlink-login er synlig.Der er mange af dem

Spørgsmål 3: Hvorfor leverer MQTT generelt ikke persistensfunktioner?

MQTT-protokollen er designet efter enhedens online-design, og dataene gemmes i hukommelsen

Spørgsmål 4: Er MQTT hukommelseskrævende?

MQTT bruger mere hukommelse, og de målte data for emqtt er: 38W, hukommelsen dækker 14G, CPU 15%

Spørgsmål 5: Hvad er forholdet mellem session og klient?

For eksempel, hvis du har et kort som klient, der initierer en MQTT-forbindelsesanmodning for at forbinde til MQTT-serveren, for eksempel er det en EMQTT-tjeneste, og efter at EMQTT-serveren har modtaget forbindelsesanmodningen fra dette kort, vil den etablere en TCP-forbindelse med kortet på TCP-laget, og inden for EMQTT vil en proces blive genereret til at kommunikere med dette kort, og en proces vil også blive genereret, kaldet session. Denne session er et tema, der specialiserer sig i at administrere abonnementet på dette board, og andre boards sender det også til sessionen, der svarer til dette board, hvis de offentliggør det emne, der er af interesse for dette board, hvis denne session modtager det abonnerede emne og finder ud af, at klienten stadig er i live, vil den sende data gennem denne klient via TCP til dette board, hvis det viser sig, at klienten ikke længere er der, altså at boardet og serveren er ødelagt. Derefter gemmer sessionen det modtagne abonnementsemne i sessionen først, og næste gang boardet er forbundet, og cleansession=false, vil sessionen ikke blive ryddet, og når forbindelsen denne gang er, vil den tidligere modtagne abonnementsbesked blive sendt til boardet, hvilket sandsynligvis er det, det betyder.

Spørgsmål 6: Hvordan ved emqtt, at den tilsluttede klient er den samme?

Når du forbinder, skal du sætte et klient-ID, dette ID kan ikke sættes, hvis ikke sat, vil et unikt ID automatisk blive genereret på emqtt-serversiden, hvis du vil bruge session, skal du have et unikt ID, du kan bruge IMEI. Hvis du skal modtage offline-beskeder, skal du bruge et bestemt ID.

Spørgsmål 7: Kan sessionstiden for emqtt ændres?

Du kan ændre sessionstiden, nu er den 48 timer, du kan ændre den til en uge, hvis du vil have den permanent, er jeg bange for, at emqtt ikke er egnet.

Spørgsmål 8: Er adgangstilladelsen for emqtt skrevet i konfigurationsfilen?

etc/acl.config

Spørgsmål 9: Hvad er fordelingen af emqtt?

Distribueret betyder ganske enkelt at forbinde flere af dine servere sammen, en eller flere af dem, så længe de ikke alle er ødelagte, kan emqtt køre normalt. EMQTT-data deles af flere noder, og hvis der opstår problemer med en node, vil dataene ikke gå tabt, men sessionsdataene på noden vil gå tabt.









Tidligere:Første bekendtskab med EMQX (EMQTTD) beskedkøen
Næste:jQuery-studienoter
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com