Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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 составляют: 38 Вт, память — 14G, CPU — 15%

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

Например, если у вас есть плата, в качестве клиента, которая инициирует запрос на MQTT-соединение для подключения к MQTT-серверу, например, это сервис EMQTT, после того как EMQTT-сервер получает запрос на соединение этой платы, он устанавливает TCP-соединение с платой на уровне TCP, и внутри EMQTT генерируется процесс для связи с этой платой, а также генерируется процесс, называемый сессией. Эта сессия специализируется на управлении подпиской на эту доску, и другие форумы также отправляют её на соответствующую сессию, если публикуют интересующую тему для этого форума, если сессия получает подписанную тему и обнаруживает, что клиент жив, данные будут отправлены через этого клиента через TCP на эту доску, если выяснится, что клиента больше нет, то есть плата и сервер сломаны. Затем сессия сначала сохраняет полученную тему подписки в сессии, а в следующий раз, когда плата будет подключена, и cleansession=false, сессия не будет очищена, и при подключении на этот раз ранее полученное сообщение о подписке будет отправлено на доску, что, вероятно, и означает.

Вопрос 6: Как emqtt узнает, что подключённый клиент одинаковый?

При подключении нужно установить клиентский ID, этот ID можно оставить неустановленным, если он не установлен, уникальный ID будет автоматически генерироваться на стороне сервера emqtt, если вы хотите использовать сессию, у вас должен быть уникальный идентификатор, вы можете использовать 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