Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 8488|Отговор: 0

Няколко точки за знания по EMQTT

[Копирай линк]
Публикувано в 15.02.2019 г. 10:25:09 ч. | | |
Преди да започна текста, трябва да благодаря на интернет потребителите "Xiaolong" и на потребителите в emqtt.io групата за тяхната помощ, току-що започнах да използвам MQTT. Има много неща, които не разбирам, когато попитах за решението в emqtt.io групата, "Xiaolong" ми даде подробно обяснение на някои точки от MQTT и предостави решения, благодаря ви много. Мисля, че някои от нещата, споменати в нея, все още са много полезни за начинаещи, затова ето обобщение на историята ми на чат с "Xiaolong" за ваша справка.

Въпрос 1: Ако MCU има ограничен кеш и ограничена изчислителна мощ, е невъзможно да се изпращат съобщения наведнъж, как да се публикуват съобщения през MQTT в този случай?
Първо, сглобете заглавието на протокола за публикуване, запишете дължината на полезния товар в него, изпратете го през TCP и след това изпратете полезния товар постепенно. Ако не можете да получите общата дължина на полезния товар, това е трудно. Тъй като изпращате отчет за публикуване на протокола, след като сървърът прочете дължината на полезния товар в главата, той ще продължи да чете, докато достигне необходимата дължина, след което публикуването се брои. Затова първо трябва да потвърдите дължината на съдържанието, което публикувате, след това да групирате заглавието на публикуване на пакета, да попълните дължината на полезния товар, tcp:send(head), и след това да изпратите полезния товар един по един, например по 1k наведнъж, или да изпратите данните според нормалния tcp и да ги изпратите докрай, дори ако публикуването е приключило. Следващото изпращане принадлежи на TCP слоя и не е нужно да се намесвате. Ако в TCP слоя изпращането се провали, трябва да има проблем с сокета, връзката е прекъсната, трябва да се свържете отново към MQTT сървъра, ако не е завършено, тогава и сесията на сървъра ще приключи, тоест сървърът не е получил данните. Свържете се отново, трябва да изпратите съобщението отново, стига да е прекъснато, трябва да се свържете отново, дали искате да изпратите данните отново зависи от това дали сте запазили предишните данни. Също така, ако съобщението е важно, можете да използвате qos=1 или 2, за да гарантирате, че сървърът получава съобщението, qos=1 изисква едно пътуване в двете и двете обиколки, qos=2 изисква четири двупосочни пътувания, qos=0 е много прост, стига да го изпратите, няма значение.

Въпрос 2: Има ли много отворени ресурси за MQTT?

Входът към хиперлинк е видим.Те са много

Въпрос 3: Защо MQTT обикновено не предоставя функции за персистентност?

MQTT протоколът е проектиран според онлайн дизайна на устройството, а данните се съхраняват в паметта

Въпрос 4: Изисква ли MQTT памет?

MQTT е по-интензивен за памет, а измерените данни на emqtt са: 38W, паметта отчита 14G, процесорът 15%

Въпрос 5: Каква е връзката между сесията и клиента?

Например, ако имате платка като клиент, която инициира заявка за MQTT връзка към MQTT сървъра, например това е EMQTT услуга, след като EMQTT сървърът получи заявката за връзка от тази платка, той ще установи TCP връзка с платката на TCP слоя, а в рамките на EMQTT ще се генерира процес за комуникация с тази платка, както и ще се генерира процес, наречен сесия. Тази тема е специализирана в управлението на абонамента на този борд, и други бордове също ще го изпратят на съответната сесия, ако публикуват темата от интерес до този борд, ако тази сесия получи абонираната тема и установи, че клиентът все още е жив, ще изпрати данните през този клиент чрез TCP към този борд, ако се установи, че клиентът вече не е там, тоест платката и сървърът са повредени. След това сесията първо запазва темата на получения абонамент в сесията, а следващия път, когато дъската се свърже, и cleansession=false, тогава сесията няма да бъде изчистена, а при свързване този път предварително полученото абонаментно съобщение ще бъде изпратено до дъската, което вероятно означава.

Въпрос 6: Как emqtt знае, че свързаният клиент е същият?

При свързване трябва да зададете клиентски ID, този ID може да остане незабелязан, ако не е зададен, уникален ID ще се генерира автоматично от страна на emqtt сървъра, ако искате да използвате сесията, трябва да имате уникален ID, можете да използвате IMEI. Ако трябва да получавате съобщения офлайн, трябва да използвате определен идентификатор.

Въпрос 7: Може ли времето на сесията на emqtt да се променя?

Можеш да промениш времето на сесията, сега е 48 часа, можеш да го смениш на седмица, ако искаш да е постоянно, страхувам се, че emqtt не е подходящ.

Въпрос 8: Разрешението за достъп на emqtt записано ли е в конфигурационния файл?

etc/acl.config

Въпрос 9: Какво е разпределението на emqtt?

Разпределено просто означава свързване на няколко от сървърите ви заедно, всеки един или повече от тях, стига да не са всички повредени, emqtt може да работи нормално. EMQTT данните се споделят от няколко възела, и ако възникне проблем с възел, данните няма да се загубят, но сесийните данни на възела ще бъдат загубени.









Предишен:Първо запознаване с опашката за съобщения EMQX (EMQTTD)
Следващ:jQuery бележки за изследване
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com