Push-Benachrichtigungen mit Socket.IO und PHP

8

Die Idee / der Kontext:

Ich denke darüber nach, meinen Nutzern ein nettes kleines Extra-Feature zu geben: Ich möchte Push-Benachrichtigungen hinzufügen. Dies ist der Anwendungsfall:

Leute haben ein Gästebuch auf ihrer Profilseite. Wenn jemand eine Nachricht im Gästebuch eines Benutzers veröffentlicht, erhält dieser Benutzer eine Push-Benachrichtigung (wenn er online ist). Wenn er nicht online ist, werden wir beim nächsten Online-Aufruf einfach die Benachrichtigungen aus der Datenbank abrufen.

Ich habe darüber nachgedacht, Socket.IO auf einem Node.JS-Server auszuführen. Meine aktuelle Anwendung ist mit PHP erstellt (also wird das Posting etc. von PHP übernommen).

Alle Online-Benutzer verbinden sich mit Socket.IO, um auf ihre eigenen Benachrichtigungen zu warten. Ihr Socket wird in einem Array oder Hash auf dem Server gespeichert.

Dies ist der Fluss, an den ich denke:

  1. UserA sendet eine Nachricht im Gästebuch von UserB
  2. Macht Socket.IO eine Benachrichtigung an UserB (wenn online, so bekannt durch Socket.IO)
  3. Speichern Sie die Nachricht in DB

Das Problem hier ist der ' make Socket.IO sendet eine Benachrichtigung ' - Teil. Ich würde einen Weg brauchen, um dies von PHP zu tun, weil ich möchte, dass der Server diese Benachrichtigung ausgibt und nicht der Benutzer , der die Nachricht veröffentlicht. Warum fragst du? Ich möchte verhindern, dass böswillige Benutzer gefälschte Benachrichtigungen erstellen. Im Pseudocode würde die PHP-Anwendung so aussehen:

%Vor%

Die Frage (n):

Was denken Sie darüber? Gibt es bessere Möglichkeiten, dieses scheinbar kleine Feature zu implementieren? Und wie würde ich das socketio_emit() in PHP machen, mit anderen Worten: Wie kommuniziere ich mit einem Socket.IO Server mit PHP?

Vielen Dank!

    
EsTeGe 18.07.2012, 20:49
quelle

1 Antwort

9

Ich habe das gelöst, indem ich Express.js und CURL benutzt habe, um neue Benachrichtigungen zu posten. Der Node.js-Server überwacht eine bestimmte URL, z. / new_notification. Wenn ich eine POST-Anfrage von meinem Webserver mit CURL an diese URL stelle, kann ich neue Benachrichtigungen hinzufügen und sie mit Socket.IO (alle in derselben Node.js-Anwendung) behandeln.

    
EsTeGe 28.07.2012, 10:10
quelle

Tags und Links