tutorial socket example php socket.io

example - Notificaciones Push usando Socket.IO y PHP



socket php (1)

Lo resolví usando Express.js y CURL para publicar nuevas notificaciones. El servidor Node.js escucha una URL específica, por ejemplo, / new_notification. Al hacer una solicitud POST desde mi servidor web con CURL a esa URL, puedo agregar nuevas notificaciones y manejarlas con Socket.IO (todas en la misma aplicación Node.js).

La idea / contexto:

Estoy pensando en dar a mis usuarios una pequeña característica adicional: quiero agregar notificaciones automáticas. Este es el caso de uso:

La gente tiene un libro de visitas en su página de perfil. Cuando alguien publica un mensaje en el libro de visitas de un usuario, ese usuario recibirá una notificación de inserción (si está en línea, por supuesto). Si no está en línea, la próxima vez que se conecte, simplemente retiraremos las notificaciones del DB.

Estaba pensando en hacer esto con Socket.IO ejecutándose en un servidor Node.JS. Mi aplicación actual está construida con PHP (por lo que PHP, la publicación, etc.).

Todos los usuarios en línea se conectarán usando Socket.IO para escuchar sus propias notificaciones. Su socket se guardará en una matriz o hash en el servidor.

Este es el flujo que tengo en mente:

  1. UserA publica un mensaje en el libro de visitas de UserB
  2. Haga que Socket.IO emita una notificación al usuario B (si está en línea, lo que Socket.IO conoce)
  3. Guarde el mensaje en DB

El problema aquí es el '' hacer que Socket.IO emita una '' notificación ''. Necesitaría una forma de hacerlo desde PHP, porque quiero que el servidor emita esta notificación y no el usuario que está publicando el mensaje. ¿Porque preguntas? Quiero evitar que los usuarios malintencionados creen notificaciones falsas. Entonces, en un pseudocódigo, la aplicación PHP se vería así:

// do some validations here ... // This is the message that was posted $message = array( ''from'' => ''UserA'', ''to'' => ''UserB'', ''msg'' => ''Hello you'' ); // Send a notification to the user by emitting an event socketio_emit(''notification'', json_encode($message)); save_in_db($message);

Las preguntas):

¿Cuáles son sus pensamientos sobre esto? ¿Hay mejores formas de implementar esta característica aparentemente pequeña? Y también, ¿cómo haría el socketio_emit() en PHP, en otras palabras: ¿cómo me comunico con un servidor Socket.IO utilizando PHP?

¡Muchas gracias!