socket rooms example php mysql node.js comet socket.io

php - rooms - Implementación y diseño de la arquitectura de un sistema de notificación mediante socket.io node.js y mensajes entrantes



socket javascript (1)

Trate de ver la presentación Por qué las bases de datos apestan para la mensajería, es decir, la razón por la que no debe usar bases de datos como MySQL para la mensajería. Messaging sistemas de Messaging y notificaciones funcionan bien con Event Driven Architecture y recomendaría ver this presentación o aprender más sobre este tema desde here para obtener una imagen más amplia del "ecosistema" impulsado por eventos.

Renuncias

  • No he trabajado con node.js antes
  • No he usado socket.io antes

Estoy considerando la implementación de un sistema de notificación estilo Google Plus, Facebook, StackOverflow. No soy un desarrollador sin experiencia, y eventualmente lo resolveré, pero solo estoy buscando un impulso en la dirección correcta.

Lo que quiero es que los usuarios que navegan por mi sitio reciban una notificación durante su sesión de navegación cuando reciban un nuevo mensaje.

Actualmente, todos mis mensajes se almacenan en una sola tabla.

| id | messageSubject | messageBody | hasRead | readDate | sentDate | sentToUser | sentFromUser | | 1 | HelloWorld | Nada | 0 | `null` | `null | 1 | 10 |

Ahora, todos mis mensajes se recuperan de docenas de fuentes diferentes.

  • Un mensaje puede ser ingresado a través de una API por terceros
  • El mensaje se extrae de Send Grid
  • Los mensajes pueden ser enviados a través de controladores de mensajes privados.
  • Etcétera etcétera

Lo que quiero es tener una forma de poder notificar a los usuarios cuando se recibe un nuevo mensaje. Me complace refactorizar mi código de cualquier manera que permita notificar a mi node.js cuando reciba un mensaje de inserción si es lo que tengo que hacer.

Pero no estoy seguro de por dónde empezar.

Mi problema es que todos mis mensajes se ingresan en mysql a través de docenas de fuentes diferentes, mis declaraciones de Insert están en muchas áreas. Así que simplemente no sé la mejor manera de proceder.

Gracias.