Red de conocimiento informático - Conocimiento informático - Cómo implementar el protocolo mqtt a través de php

Cómo implementar el protocolo mqtt a través de php

MQTT es un protocolo ligero de publicación/suscripción de mensajes y es una solución ideal para implementar servidores de envío de mensajes basados ​​en clientes móviles.

Podemos descargar el código de muestra para este proyecto desde aquí y encontrar la implementación del lado del servidor escrita en PHP.

La arquitectura es la siguiente:

wmqtt.jar? es una implementación del protocolo MQTT proporcionado por IBM. Puedes descargarlo desde el siguiente sitio web. Puede agregar este frasco a su aplicación de Android.

¿Really Small Message Broker (RSMB)?

Really Small Message Broker (RSMB) es un sencillo broker MQTT, también proporcionado por IBM. Por defecto, el puerto 1883 está abierto y es responsable de recibir mensajes del servidor y reenviarlos al dispositivo móvil especificado en la aplicación.

SAM es una biblioteca PHP escrita para MQTT. Puedes descargarlo desde aquí.

send_mqtt.php es un script PHP que recibe mensajes vía POST y envía mensajes a RSMB vía SAM.

Código de muestra:

ؠ?Usando el protocolo XMPP para implementar Android Push

Esta es la solución que utilicé en mi proyecto. De hecho, el servidor C2DM oficial de Google también encapsula el protocolo XMPP en la parte inferior.

XMPP (Protocolo de presentación y comunicaciones extensible) es un protocolo basado en XML que se utiliza para mensajería instantánea (IM) y sondeo de presencia. El protocolo eventualmente permitirá a los usuarios de Internet enviar mensajes instantáneos a cualquier otra persona en Internet.

androidpn es una implementación de notificaciones push de Android de código abierto Java basada en el protocolo XMPP. Contiene lados completos de cliente y servidor. Después de investigar el código fuente, descubrí que el lado del servidor está básicamente modificado e implementado sobre la base de otro proyecto de código abierto, openfire. Pero lo que es aún más deprimente es que la documentación de androidpn está escrita en coreano, por lo que todo el proceso de investigación. Básicamente es leer el código fuente. Su diagrama de implementación es el siguiente:

El cliente androidpn necesita utilizar un paquete de protocolo XMPP de código abierto basado en Java. Este paquete también se basa en otro proyecto de código abierto de openfire. Necesitamos compilarlo nosotros mismos, podemos colocar directamente el cliente androidpn en asmack.jar. El cliente utiliza la clase XMPPConnection proporcionada en asmack para establecer una conexión persistente con el servidor y realiza el registro del usuario y la verificación de inicio de sesión a través de esta conexión. También puede recibir notificaciones enviadas por el servidor a través de esta conexión.

El servidor androidpn también está implementado en el lenguaje Java y se basa en el proyecto de código abierto openfire, pero su parte web utiliza el marco Spring, que es diferente de openfire. El servidor androidpn consta de dos partes. Una parte es el servicio XMPP que escucha en el puerto 5222. Es responsable de comunicarse con el servicio XMPP que escucha en el puerto 5222. Es responsable de comunicarse con la clase XMPPConnection del cliente para el registro y autenticación del usuario, y enviar mensajes de notificación push. La otra parte es el servidor web, que utiliza un servidor HTTP ligero y es responsable de recibir las solicitudes de red de los usuarios. La arquitectura del servidor es la siguiente:

El nivel superior contiene cuatro componentes: SessionManager, Auth Manager, PresenceManager y Notification Manager.

SessionManager es responsable de administrar la sesión entre el cliente y el servidor; Auth SessionManager es responsable de administrar la sesión entre el cliente y el servidor; Auth Manager es responsable de la administración de la autenticación del usuario del cliente; Presence Manager es responsable de administrar el estado de inicio de sesión del cliente; usuarios; NotificationManager es responsable de implementar desde La función del servidor que envía mensajes al cliente.

La interfaz del lado del servidor es la siguiente, correspondiente a los módulos funcionales anteriores:

Después del envío, podemos ver la información recibida en el terminal móvil: