Node.js zu PHP Socket Server

06/08/2013 22:05 Bastofa#1
Hay,
wir wollen auf unserer Webseite von AJAX auf Websockets umsteigen. Nun ist meine Frage, was die bessere Lösung ist, node.js oder ein Socket Server in PHP. Die Programme müssen mit großen Datenmengen zurecht kommen. Da PHP keine Asynchronen Berechnungen unterstütz und node.js schon hatte ich mir gedacht, einen PHP Server auf mehreren Ebenen zu betreiben, indem die Server nur eine Bestimmte Anzahl an Clienten zulassen und dann ein Hauptserver diese Verwaltet.
Nun ist meine Frage ob der Arbeitsaufwand es wert ist. Ich muss von mir sagen, dass ich noch nie mit node.js gearbeitet habe und mich da erst reinlesen müsste.
Bin mal gespannt auf eure Meinungen.
06/08/2013 23:09 マルコ#2
Nja, die Frage ist, warum Web Sockets? WS sind ein HTML5 Feature. Um es benutzen zu können benötigt man demnach einen aktuellen Browser mit entsprechender Unterstützung. Viele Leute da draußen haben das nicht. Sie müssten also auf Features auf deiner Homepage verzichten. Willst du das wirklich?

Dass PHP keine Threads unterstützt stimmt auch nicht ganz. Es gibt z.B. [Only registered and activated users can see links. Click Here To Register...] .
Wenn deine Homepage bereits auf PHP basiert, warum dann nicht bei PHP bleiben, vor allem wenn du dich damit auskennst?


Meiner Meinung nach machen Sockets auch nur dann Sinn, wenn du ständig Daten in beide Richtungen verschicken musst, und das so schnell wie möglich.
Für alles andere ist AJAX mehr als ausreichend. Und wenn du pullen willst, dann gibt es http://en.wikipedia.org/wiki/Comet_(programming) .
Da du mit AJAX schon erfolgreich dein Problem behoben hast, denke ich, dass du keine Web Sockets brauchst.

Falls dein Traffic zu hoch ist, dann solltest du lieber dein Konzept überarbeiten und schauen, wo du sparen kannst.
06/09/2013 13:47 flogi333#3
Quote:
Nja, die Frage ist, warum Web Sockets? WS sind ein HTML5 Feature. Um es benutzen zu können benötigt man demnach einen aktuellen Browser mit entsprechender Unterstützung. Viele Leute da draußen haben das nicht. Sie müssten also auf Features auf deiner Homepage verzichten. Willst du das wirklich?
Also wenn ich mir die Browserunterstützung so ansehe verstehe ich deine Bedenken nicht: [Only registered and activated users can see links. Click Here To Register...]

Für IE < 10 einfach mit "Conditional Comments" ein Fallback für das vorhandene Ajax-Konzept.
06/09/2013 14:22 PseudoPsycho#4
Quote:
Originally Posted by flogi333 View Post
Für IE < 10 einfach mit "Conditional Comments" ein Fallback für das vorhandene Ajax-Konzept.
Grundstzlich würde ich das auch so machen, nur halt nicht mir Conditional Comments. Bei der Nutzung von node.js kann man socket.io verwenden. Ansonsten [Only registered and activated users can see links. Click Here To Register...]. Mit solchen bereits fertigen Bibliotheken wird dann automatisch die beste Verbindungsart ausgewählt.
06/09/2013 17:24 Bastofa#5
Es schon für uns vom Vorteil zu Websockets zu wechseln. Wie Pseudo schon sagte würden wir Fallbacks einsetzen für Browser die Websockets nicht unterstützen. Im Prinzip ist es ausgeschlossen, dass wir bei AJAX bleiben.
Ich habe gehört dass es mit node.js möglich ist zwei Benutzer direkt miteinander kommunizieren zu lassen. Wäre das mit Php auch umsetzbar? Und wenn ja, wie?
06/09/2013 18:46 PseudoPsycho#6
Du meinst WebRTC.
socket.io + node.js wird da häufig nur als Singnalling-Server verwendet. Da könnte man aber auch alles andere verwenden. PHP geht da natürlich auch.
Da ich ja weiß, worum's geht: Für Gruppenchats ist das nur bedingt geeignet, da die Unterstützung nur mäßig ist. Da sollten die Nachrichten zumindest zusätzlich an den Server gesendet werden, um anschließend von den betroffenen Browsern per WebSocket oder Ajax abgefragt zu werden.
Für Video-Konferenzen wäre WebRTC die einzige native Möglichkeit. Da können die entsprechenden Nutzer dann einfach nicht dran teilnehmen.
06/09/2013 19:41 Bastofa#7
Ich glaube das sollte für mich an Infos reichen.
Vielen Dank :)
06/09/2013 22:06 Else#8
Möp! Sockets in PHP ist eine Qual. Ansonsten kannst du auch WebSockets in PHP umsetzen, jedoch ist der Leistungsanspruch im Gegensatz zu anderen Sprachen höher. Es bietet sich jedoch in node.js ebenso .NET an zu nutzen, wenn du damit flink bist, wieso nicht?
06/10/2013 13:40 PseudoPsycho#9
Quote:
Originally Posted by Else View Post
Möp! Sockets in PHP ist eine Qual. Ansonsten kannst du auch WebSockets in PHP umsetzen, jedoch ist der Leistungsanspruch im Gegensatz zu anderen Sprachen höher. Es bietet sich jedoch in node.js ebenso .NET an zu nutzen, wenn du damit flink bist, wieso nicht?
Die Sache ist die, dass wir bereits einen PHP-Server für den Chat (und diverse damit zusammenhängende Anwendungen) haben. Auf diesem haben wir bereits die entsprechenden Klassen.
Ein Sprachwechsel hieße, dass wir eben diese nochmal neu schreiben müssen. Ihn nicht durchzuführen wäre ein Leistungsproblem. Daher der Thread, wenn ich den Zusammenhang da richtig erkenne.
06/11/2013 17:21 Else#10
PHP ist für solche „Kamikaze-Auftritte“ nicht geeignet und wird es auch niemals werden. Sei es mit Erweiterungen oder anderes. PHP ist und bleibt eine serverseitig interpretierte Skriptsprache. Und jeder wird dir davon abraten, einen Chat damit aufzubauen! Zumal ich nicht die CPU-Auslastung sehen möchte...

Was möglich wäre: Nimm node.js als Hintergrund-Server für sonstige Aktivitäten. Alles andere kannst du mit Java-Skript im Browser umsetzen, siehe Websockets usw.
06/11/2013 19:29 PseudoPsycho#11
Quote:
Originally Posted by Else View Post
PHP ist für solche „Kamikaze-Auftritte“ nicht geeignet und wird es auch niemals werden. Sei es mit Erweiterungen oder anderes. PHP ist und bleibt eine serverseitig interpretierte Skriptsprache. Und jeder wird dir davon abraten, einen Chat damit aufzubauen! Zumal ich nicht die CPU-Auslastung sehen möchte...

Was möglich wäre: Nimm node.js als Hintergrund-Server für sonstige Aktivitäten. Alles andere kannst du mit Java-Skript im Browser umsetzen, siehe Websockets usw.
Würde stimmen, wenn es nur ein Chat wäre. Ist das von mir bereits in 'nem eigenen Thread vorgestellte soziale Netzwerk. Da es aber eh nur um's Signalling und 'nen Uralt-Browser-Fallback geht, nimmt sich die Sprache da nicht viel, soll ja über WebRTC laufen. ;)
06/12/2013 17:39 Else#12
Ein eigener Thread hin- oder her. Das sei mal völlig dahin gestellt. Die CPU-Auslastung wird nach wie vor beansprucht. Und ob es jetzt nur ein Chat wäre, oder mehr. Es geht aufs gleiche hinaus. ;-)
06/12/2013 20:32 PseudoPsycho#13
Quote:
Originally Posted by Else View Post
Ein eigener Thread hin- oder her. Das sei mal völlig dahin gestellt.
Wie kommst du jetzt auf 'nen eigenen Thread? Ich schrieb von WebRTC. Das heißt P2P zwischen den Nutzern. Da braucht man den Server nur für's Signalling.
06/12/2013 21:37 Else#14
Quote:
Originally Posted by PseudoPsycho View Post
Wie kommst du jetzt auf 'nen eigenen Thread? Ich schrieb von WebRTC. Das heißt P2P zwischen den Nutzern. Da braucht man den Server nur für's Signalling.
Hat sich erledigt. Ich habe mich verlesen, in den ersten Zeilen. ;-)