2014-03-13 10 views
7

Ich möchte in Echtzeit die Daten überwachen, die Benutzer in comments Tabelle eingeben. Ich habe einen Server läuft Apache, und nehmen wir an, dass ein Knoten-Server auf Port 1337.Ist es möglich Nodejs mit Cakephp zu integrieren?

hat Wie würde ich tun, dass jedes Mal, wenn jemand neue Daten speichern, zB Rückkehr ich die Gesamtzahl der Tabellenzeilen in comment und es zeigen in einem view?

Vielleicht ist die $this->Comment->save($this->request->data); mit einem anderen Port mit Httpsockect?

+0

ich glaube nicht, dass nodejs eine nette Lösung für Ihre Aufgabe wäre, es ist ein bisschen zu viel, um nodejs zu installieren und einfach websocket für Kommentare zu verwenden.longpolling passt für diese Art von Aufgabe netter Sie können dies mit PHP ohne zu viel Aufwand erreichen. – Gntem

+0

Danke, wonach suche ich das? –

Antwort

9

Ja, es ist möglich.

Sie haben mehrere Möglichkeiten, dies zu lösen, lassen Sie mich Ihnen meine Ideen

Sie können einfach lange Polling verwenden und gar nicht verwenden Node.js. Es ist eine geeignete Lösung, wenn es dort nicht zu viel Verkehr gibt, sonst wird es Ihnen schlecht gehen.

Sie können Websockets verwenden und Node.js überhaupt nicht verwenden. Here you have a basic guide about websockets and PHP. Obwohl ich mir fast sicher bin, dass Sie keine "Räume" erstellen können, dh Benachrichtigungen für bestimmte Kommentare senden.

Sie können auch Ratchet verwenden. Dies ist eine anspruchsvollere Bibliothek für die Handhabung von Websockets und unterstützt Räume.

Schließlich, wenn Sie vollständig mit Node.js und CakePHP tauchen wollen, würde ich vorschlagen, beginnend mit watching this talk given on Cakefest 2012, die genau beschreiben Ihr Szenario.

Nachdem Sie das gesehen haben, möchten Sie vielleicht ein wenig über Socket.io lernen. Dies ist eine komplexere Lösung, aber es ist das, was ich bei der Integration von CakePHP und Node.js verwendet habe, um Echtzeitanwendungen zu erstellen.

Die Strategie hier ist, dass die Benutzer eine room beitreten, wenn sie/article/view/123 besuchen, nehmen wir an, der Raumname ist die articleID, dann wird socket.io auf Ereignisse in diesem Raum zuhören.

Sie haben eine CakePHP-Methode, die das Speichern behandelt. Wenn Benutzer dann das Formular abschicken, rufen Sie nicht direkt die Cake-Aktion auf, Sie haben socket.io, um ein Ereignis zu senden, dann übergeben Sie in Ihrem Fall die Daten an den Server (Node.js) und nodejs ruft Ihre cakephp-Funktion auf Das speichert die Daten. Wenn Nodejs eine Bestätigung von CakePHP empfängt, dann senden Sie ein Ereignis (mit socket.io), dieses Ereignis wird alle mit diesem Raum verbundenen Benutzer wissen lassen, dass ein Kommentar gemacht wurde.

+0

Thaaaanksss !!! Können Sie ein kleines Beispiel für das Finale Ihrer Antwort posten? Aufruf von socket.io und von sockect.io Aufruf meiner Funktion? –

+0

Ich werde wahrscheinlich in einem Blog-Post, da es eine Menge Code beteiligt ist. –

+0

blog url pls ??? = D –

1

Sie haben grundsätzlich die Wahl zwischen WebSockets und Long Polling.

Entscheiden verwenden, welche Technologie Sie verwenden möchten, und starten Sie Ihren Anwendungsfall zu implementieren. Beachten Sie, dass Websockets mehr oder weniger neu sind. Je nach Ihren Anforderungen können Sie WebSockets möglicherweise nicht verwenden, da Sie möglicherweise schlechte Browser unterstützen müssen. See this page.

+0

Ratsche scheint IE8 zu unterstützen + – Alvaro

Verwandte Themen