Этот пост написан Вираджем Анчаном, инженером Full Stack в Haptik.
Haptik - это приложение для чата, которое соединяет пользователей с их личными цифровымипомощники в настоящее время. При общении с личным помощник, вам нужно как можно меньше задержек, чтобы все было сделано быстро.
Когда я присоединился к Haptik после окончания колледжа в мае 2015 года, моей первой технической проблемой было изучение архитектуры обмена сообщениями. В июле 2015 года я предложил нашему техническому директору перейти с XMPP на MQTT. Наши мобильные приложения (Android и iOS) и Athena (инструмент веб-чата, используемый нашими помощники) использовал XMPP для обмена сообщениями в реальном времени. Мы столкнулись с множеством проблем с XMPP. Отметим несколько: в XMPP отсутствует встроенное качество обслуживания (QoS). QoS - это соглашение между отправителем и получателем сообщения о гарантиях доставки сообщения. Поскольку в XMPP не было встроенного QoS, нам пришлось создать собственное решение для обеспечения доставки сообщений. Вместе с этим сеанс XMPP представляет собой один большой длинный XML-документ, и каждый клиент должен использовать управляемый событиями XML-анализатор. В общем, XMPP оказался для нас большим количеством накладных расходов и обслуживания, и нам нужно было лучшее, более масштабируемое решение. В январе 2016 года мы наконец решили перейти с XMPP на MQTT.
MQTT - это легкий протокол межмашинного взаимодействия / «Интернета вещей». MQTT расшифровывается как MQ Telemetry Transport. MQTT - чрезвычайно простой и легкий протокол обмена сообщениями публикации / подписки. Он разработан для устройств с ограниченными возможностями, больших задержек или ненадежных сетей. Принципы проектирования состоят в том, чтобы минимизировать требования к пропускной способности сети и ресурсам устройства, одновременно пытаясь обеспечить надежность и некоторую степень уверенности в доставке. Эти принципы делают MQTT идеальным для Интернета вещей и мобильных приложений, где пропускная способность и заряд батареи имеют большое значение.
5 причин, почему мы перешли с XMPP на MQTT
1. Меньше накладных расходов и легкий вес
2. Поддерживает QoS (выстрелил и забыл, хотя бы один раз и ровно один раз)
3. Низкий уровень активности трафика.
4. Механизм Pub / Sub
5. Низкое энергопотребление.
MQTT предоставляет 3 типа QoS для доставки сообщений:
QoS 0 (запустить и забыть) - сообщение доставляется не более одного раза. Сообщения QoS 0 не сохраняются. Поэтому сообщения QoS 0 теряются, если клиент отключается. В QoS 0 доставка сообщения не подтверждается. Это самый быстрый способ перевода.
QoS 1 (хотя бы один раз) - сообщение доставляется хотя бы один раз. Сообщения могут доставляться несколько раз, если отправитель не получает подтверждения от получателя. Сообщения должны храниться на стороне отправителя, пока отправитель не получит подтверждение от получателя.
QoS 2 (Ровно один раз) - сообщение доставляется ровно один раз. QoS 2 гарантирует, что сообщение будет получено получателем ровно один раз. Сообщения должны храниться на стороне отправителя, пока отправитель не получит подтверждение от получателя. Это самый надежный способ перевода. Это также самый медленный режим передачи, поскольку он использует расширенную последовательность подтверждения по сравнению с QoS 1.
1.Отчет о тенденциях в чат-ботах за 2021 г.
2. 4 ДОПОЛНИТЕЛЬНЫХ и 3 НЕОБХОДИМЫХ ПРИМЕНЕНИЯ при обучении модели НЛП чат-бота
3. Консьерж-бот: управление несколькими чат-ботами с одного экрана чата.
MQTT использует шаблон, называемый публикацией / подпиской. К брокеру MQTT подключаются несколько клиентов. Клиенты могут публиковать или подписываться на тему. Темы используются брокером, чтобы решить, кто получит сообщение. Брокер и MQTT действуют как простой общий интерфейс, к которому можно подключиться.
Наш сервер MQTT работает на Москитто. Mosquitto - это брокер сообщений с открытым исходным кодом, который реализует MQTT. Он написан на C. Mosquitto прост в установке и развертывании. Он поддерживает TLS, Websockets и обеспечивает аутентификацию по имени пользователя и паролю, предварительно разделенным ключам или клиентским сертификатам TLS. Он также поддерживает ACL. Используя ACL, вы можете настроить, какие клиенты имеют доступ к каким темам. Мы решили использовать Пахо Python библиотека для бэкэнда. Наш бэкэнд поддерживает соединение MQTT и направляет сообщения через конвейер чата.
Установка (mosquitto на ubuntu)
sudo apt-get установить комара
Установка (paho-python)
pip установить paho-python
Вот простой клиент, который выписывает в тему (спорт / крикет / Индия) и распечатывает полученные сообщения.
<i><span style="font-weight: 400;">import paho.mqtt.client as mqtt</span></i>
<i><span style="font-weight: 400;"># The callback for when the client receives a CONNACK response from the server.
</span></i><i><span style="font-weight: 400;">def on_connect(client, userdata, flags, rc):
</span></i><i><span style="font-weight: 400;"> print("Connected with result code " + str(rc))
</span></i><i><span style="font-weight: 400;"> client.subscribe("sports/cricket/india")</span></i>
<i><span style="font-weight: 400;"># The callback for when a PUBLISH message is received from the server.
</span></i><i><span style="font-weight: 400;">def on_message(client, userdata, msg):
</span></i><i><span style="font-weight: 400;"> print(msg.topic +" " + str(msg.payload))
</span></i><i><span style="font-weight: 400;"> client = mqtt.Client()</span></i><i>
</i>
<i><span style="font-weight: 400;">client.on_connect = on_connect
</span></i><i><span style="font-weight: 400;">client.on_message = on_message</span></i>
<i><span style="font-weight: 400;">client.connect("localhost", 1883, 60)</span></i>
<i><span style="font-weight: 400;">client.loop_forever() </span></i>
Вот простой клиент, который издает по теме (спорт / крикет / Индия)
<i><span style="font-weight: 400;">import paho.mqtt.client as mqtt</span></i>
<i><span style="font-weight: 400;">client = mqtt.Client()
</span></i><i><span style="font-weight: 400;">client.connect("localhost", 1883, 60)
</span></i><i><span style="font-weight: 400;">client.publish("sports/cricket/india", "India wins Asia Cup 2016!")
</span></i><i><span style="font-weight: 400;">client.loop(2)</span></i>
MQTT помог облегчить наше приложение и обеспечить надежную доставку сообщений в реальном времени. MQTT - потрясающий протокол, который имеет множество приложений в мобильной связи, IOT и M2M-коммуникации. Если вам нужен легкий и надежный протокол обмена сообщениями, вам обязательно стоит подумать о MQTT.
Хотите стать частью того удивительного, что мы создаем? Не смотрите дальше! Свяжитесь с нами по адресу привет@haptik.co
- доступ
- ДОГОВОР
- AI
- android
- Применение
- Приложения
- Программы
- архитектура
- Азия
- Аутентификация
- аккумулятор
- Бот
- брокер
- строить
- сертификаты
- вызов
- Chatbot
- chatbots
- клиентов
- код
- Колледж
- Общий
- Связь
- связь
- CTO
- задерживать
- доставки
- поставка
- Проект
- Устройства
- Интернет
- инженер
- EU
- EV
- EY
- всего лишь пяти граммов героина
- в заключение
- Для пожарных
- First
- полный
- GV
- High
- HP
- hr
- HTTPS
- ia
- Индия
- iOS
- КАТО
- вопросы
- IT
- июль
- ключи
- изучение
- Библиотека
- Длинное
- средний
- обмен сообщениями
- Мобильный телефон
- сеть
- сетей
- НЛП
- открытый
- с открытым исходным кодом
- заказ
- шаблон
- мощностью
- Премиум
- публиковать
- Питон
- реального времени
- причины
- отчету
- Требования
- ресурс
- ответ
- сдвиг
- просто
- Поддержка
- система
- Технический
- время
- TLS
- Темы
- Обучение
- перевозки
- Тенденции
- Ubuntu
- us
- пользователей
- Web
- КТО
- XML