Este post foi escrito por Viraj Anchan, Full Stack Engineer da Haptik.
Haptik é um aplicativo de bate-papo que conecta os usuários aos seus dados pessoais digitaisassistentes em tempo real. Ao conversar com seu pessoal assistente, você deseja o menor atraso possível para fazer as coisas rapidamente.
Quando entrei para a Haptik depois de me formar na faculdade em maio de 2015, meu primeiro desafio técnico foi aprender a arquitetura de mensagens. Em julho de 2015, sugeri ao nosso CTO que mudássemos de XMPP para MQTT. Nossos aplicativos móveis (Android e iOS) e Athena (ferramenta de chat da web usada por nosso assistentes) usou o XMPP para mensagens em tempo real. Estávamos enfrentando muitos problemas com o XMPP. Para apontar alguns, o XMPP carece de qualidade de serviço (QoS) integrada. QoS é um acordo entre o remetente e o destinatário de uma mensagem quanto às garantias de entrega de uma mensagem. Como o XMPP não tinha QoS embutido, tivemos que construir nossa própria solução personalizada para garantir a entrega da mensagem. Junto com essa sessão XMPP está um grande documento XML longo e cada cliente tem que usar um analisador XML baseado em eventos. Em suma, o XMPP estava provando ser uma grande sobrecarga e manutenção para nós e precisávamos de uma solução melhor e mais escalonável. Em janeiro de 2016, finalmente decidimos mudar de XMPP para MQTT.
MQTT é um protocolo de conectividade leve de máquina a máquina / ”Internet das coisas”. MQTT significa MQ Telemetry Transport. MQTT é um protocolo de mensagens de publicação / assinatura extremamente simples e leve. Ele é projetado para dispositivos restritos, alta latência ou redes não confiáveis. Os princípios de design visam minimizar a largura de banda da rede e os requisitos de recursos do dispositivo, ao mesmo tempo que tentam garantir a confiabilidade e algum grau de garantia de entrega. Esses princípios tornam o MQTT ideal para IOT e aplicativos móveis em que a largura de banda e a energia da bateria são preciosas.
5 razões pelas quais mudamos de XMPP para MQTT
1. Menos sobrecarga e leve
2. Suporta QoS (dispare e esqueça, pelo menos uma vez e exatamente uma vez)
3. Baixo tráfego de manutenção de atividade
4. Mecanismo Pub / Sub
5. Baixo consumo de energia
MQTT fornece 3 tipos de QoS para entrega de mensagens:
QoS 0 (disparar e esquecer) - A mensagem é entregue no máximo uma vez. As mensagens QoS 0 não são armazenadas. Portanto, as mensagens QoS 0 são perdidas se o cliente se desconectar. Em QoS 0, a entrega da mensagem não é confirmada. É o modo de transferência mais rápido.
QoS 1 (pelo menos uma vez) - A mensagem é entregue pelo menos uma vez. As mensagens podem ser entregues várias vezes se o remetente não receber uma confirmação do destinatário. As mensagens devem ser armazenadas no final do remetente, até que o remetente receba uma confirmação do destinatário.
QoS 2 (exatamente uma vez) - A mensagem é entregue exatamente uma vez. O QoS 2 garante que a mensagem seja recebida exatamente uma vez pelo receptor. As mensagens devem ser armazenadas no final do remetente, até que o remetente receba uma confirmação do destinatário. É o modo de transferência mais confiável. É também o modo de transferência mais lento, pois usa uma sequência de confirmação avançada em comparação com QoS 1.
1. Relatório de tendências do Chatbot 2021
2. 4 O que fazer e 3 o que não fazer para treinar um modelo de PNL do Chatbot
3. Concierge Bot: lida com vários chatbots a partir de uma tela de bate-papo
MQTT usa um padrão chamado publicar / assinar. Vários clientes se conectam ao broker MQTT. Os clientes podem publicar ou assinar um tópico. Os tópicos são usados pelo corretor para decidir quem receberá uma mensagem. O broker e o MQTT atuam como uma interface simples e comum para tudo se conectar.
Nosso servidor MQTT é alimentado por mosquito. Mosquitto é um agente de mensagens de software livre que implementa o MQTT. Está escrito em C. O Mosquitto é fácil de instalar e implantar. Ele oferece suporte a TLS, Websockets e fornece autenticação por meio de nome de usuário / senha, chaves pré-compartilhadas ou certificados de cliente TLS. Ele também oferece suporte a ACL. Usando ACL, você pode configurar quais clientes podem acessar quais tópicos. Decidimos usar Paho Python biblioteca para o back-end. Nosso back-end mantém uma conexão MQTT e roteia mensagens por meio de nosso pipeline de bate-papo.
Instalação (mosquitto no ubuntu)
sudo apt-get install mosquito
Instalação (paho-python)
pip instalar paho-python
Aqui está um cliente simples que assina para um tópico (esportes / críquete / Índia) e imprime as mensagens resultantes.
<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>
Aqui está um cliente simples que publica a um tópico (esportes / críquete / Índia)
<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>
O MQTT ajudou a tornar nosso aplicativo leve e a garantir a entrega confiável de mensagens em tempo real. MQTT é um protocolo incrível que possui muitas aplicações em comunicações móveis, IOT e M2M. Se você deseja um protocolo de mensagens leve e confiável, definitivamente deve considerar o MQTT.
Deseja fazer parte das coisas incríveis que construímos? Não procure mais! Entre em contato conosco em olá@haptik.co
- Acesso
- Acordo
- AI
- andróide
- Aplicação
- aplicações
- Aplicativos
- arquitetura
- Ásia
- Autenticação
- bateria
- Bot
- corretor
- construir
- certificados
- desafiar
- chatbot
- chatbots
- clientes
- código
- Faculdade
- comum
- Comunicações
- Conectividade
- CTO
- atraso
- entregando
- Entrega
- Design
- Dispositivos/Instrumentos
- digital
- engenheiro
- EU
- EV
- EY
- enfrentando
- Finalmente
- Fogo
- Primeiro nome
- cheio
- GV
- Alta
- HP
- hr
- HTTPS
- ia
- Índia
- iOS
- iot
- questões
- IT
- Julho
- chaves
- aprendizagem
- Biblioteca
- longo
- média
- mensagens
- Móvel Esteira
- rede
- redes
- PNL
- aberto
- open source
- ordem
- padrão
- poder
- Premium
- publicar
- Python
- qualidade
- em tempo real
- razões
- Denunciar
- Requisitos
- recurso
- resposta
- mudança
- simples
- suportes
- .
- Dados Técnicos:
- tempo
- TLS
- Temas
- Training
- transporte
- Tendências
- Ubuntu
- us
- usuários
- web
- QUEM
- XML