¿Cuáles son los pasos que debo seguir para desarrollar una aplicación móvil de mensajería instantánea nativa basada en MQTT?

MQTT (Message Queue Telemetry Transport) es un protocolo muy conocido y es muy útil en lo que respecta al concepto de Internet de las cosas. Ahora, en lo que respecta a una aplicación de mensajería (o cualquier otra aplicación para el caso), necesita dos porciones / módulos de trabajo para su proyecto

  1. Un servidor que entiende el protocolo MQTT y
  2. Un cliente que también comprende el protocolo MQTT y puede comunicarse con el servidor con éxito.

Primero explicaré el flujo general de su aplicación y luego sugeriré algunas herramientas que puede usar para comenzar con su aplicación. El flujo genérico para su aplicación basado en MQTT será el siguiente:

  1. La aplicación de mensajería enviará un paquete MQTT CONNECT al servidor. Esto es necesario antes de continuar. También puede enviar un nombre de usuario y una contraseña opcionales si desea implementar algún tipo de autenticación para el cliente.
  2. Una vez que la conexión se establece con éxito entre el servidor y el cliente, puede enviar mensajes MQTT PUBLISH cuya carga útil se basará en su lógica empresarial. por ejemplo: – puede enviar un JSONObject como parte de su carga útil y el servidor y obtener el JSONObject y el servidor puede responder a él en consecuencia.
  3. La aplicación de mensajería también puede suscribirse a varios temas en caso de que esté trabajando en una verdadera lógica basada en PUB-SUB .

En caso de que esté buscando un corredor basado en MQTT en Java, sugeriría Netty: Home. Netty es un servidor de protocolo asíncrono, incluso controlado. Recibió datos en forma de ByteBuf (un tipo de datos específico para Netty) y luego debe usar ciertos decodificadores y codificadores de acuerdo con el protocolo en el que se basa su aplicación. Netty 4.1 todavía está en fase Beta y proporciona decodificador y codificador MQTT. No estoy seguro de si está lista para producción. Sin embargo, esto es suficiente para comenzar.