Implementacja architektury i projektowanie systemu powiadomień wykorzystującego socket.io węzeł.js i wiadomości przychodzące

Wyłączenie odpowiedzialności

  • nie pracowałem z node.js before
  • nie używałem socket.io przed

Patrzę na wdrożenie systemu powiadomień w stylu Google Plus, Facebook, StackOverflow. Nie jestem niedoświadczonym deweloperem i w końcu to rozgryzę, ale szukam tylko ciągu we właściwym kierunku.

Chcę, aby użytkownicy, którzy przeglądają moją witrynę, byli powiadamiani podczas ich sesji przeglądania, gdy otrzymają nową wiadomość.

Obecnie wszystkie moje wiadomości są przechowywane w jednej tabeli.

  |  id    | messageSubject   | messageBody     | hasRead   | readDate   | sentDate   | sentToUser  | sentFromUser  |
  |   1    |   HelloWorld     | Nada            |   0       | `null`     | `null      |      1      |      10       |
Teraz, wszystkie moje wiadomości są pobierane z dziesiątek różnych źródeł.
  • wiadomość może być wprowadzona przez API przez osoby trzecie
  • wiadomość jest pobierana z siatki Wyślij
  • wiadomości mogą być wysyłane za pomocą kontrolerów prywatnych wiadomości.
  • Etc etc

Chcę mieć sposób powiadamiania użytkowników o otrzymaniu nowej wiadomości. Z przyjemnością refaktoruj mój kod w dowolny sposób, który umożliwia powiadomienie mojego węzła.js Kiedy otrzymam Wstaw wiadomość, jeśli to jest to, co muszę zrobić.

Ale nie wiem od czego zacząć.

Mój problem polega na tym, że wszystkie moje wiadomości są wprowadzane do mysql przez dziesiątki różnych źródeł, Moje Insert wypowiedzi są w wielu obszarach. Więc nie wiem, jak to zrobić.

Dzięki.
Author: Layke, 2011-08-25

1 answers

Spróbuj spojrzeć na prezentację Dlaczego bazy danych są do bani do przesyłania wiadomości czyli dlaczego nie powinieneś używać baz danych takich jak MySQL do przesyłania wiadomości. Messagingi systemy powiadomień działają dobrze z Event Driven Architecturei polecam obejrzeć tę prezentacjęlub dowiedzieć się więcej na ten temat z tutaj, aby uzyskać szerszy obraz o "ekosystemie"napędzanym zdarzeniami.

 14
Author: yojimbo87,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-25 07:43:53