2013-07-24 12 views
6

Ich schreibe gerade eine ziemlich standard Apache/PHP/mySQL-Website mit Symfony2 und erwäge die Verwendung von Node und socket.io für einen besonderen Bedarf: eine Benachrichtigungsleiste. Nichts ist zu ausgefallen, eine Benachrichtigung leuchtet, wenn Sie eine neue Freundschaftsanfrage haben, eine neue Mail ...Node.js und socket.io für eine Benachrichtigungsleiste: Gehe ich richtig?

Ich bin nicht gern regelmäßig meine Datenbank von einer Ajax-Schleife anfordern; Ich möchte, dass diese Funktion vollständig skalierbar ist und einen minimalen Platzbedarf hat.

Also überlege ich, eine einzige periodische Anfrage auf meiner DB, Server-Seite, füttern meine Liste der offenen Sockets in Node mit einer Push-Benachrichtigung für jeden betroffenen Benutzer.

Gehe ich den richtigen Weg?

Prost

+3

MySQL hat nicht wirklich ein gutes Push-Benachrichtigungssystem, aber [Redis] (http://redis.io/) tut es. Vielleicht könnten Sie eine sekundäre Datenbank nur für Benachrichtigungen verwenden, ansonsten müssen Sie aggressiv abstimmen. – tadman

Antwort

3

Sie sind definitiv auf dem richtigen Weg, aber ich schlage vor, die Benachrichtigung Sachen in Ihrer Anwendung setzen, anstatt Polling Ihrer Datenbank. Zum Beispiel von Freundschaftsanfragen, tun Sie es, wenn der Freundschaftsanfrage gesendet wird:

function send_friend_request($from, $to) { 
    $mysqli->whatever you do with that; 
    send_notification($to, 'You have a friend request!'); 
} 

wo send_notification ist eine Methode, die eine POST-Anforderung an Ihren NodeJS Server sendet. Ihr Nodejs-Server empfängt den POST und leitet die Nachricht an den Empfänger $to weiter.

+0

Ausgezeichnet, vielen Dank. – heyMcFly

Verwandte Themen