Ich hatte eine Website, die vollständig in PHP und Basic Jquery Ajax codiert wurde. Nachdem ich jedoch von node.js/socket.io erfahren hatte, habe ich fast alle Echtzeitsachen, die Ajax beinhalteten, mit nodejs und socket.io neu programmiert. Ich bin ein wenig verwirrt, ob ich das Richtige getan habe. Also meine Frage ist, wann ist Ajax eine optimale Lösung als mit Knoten/Socket?Wann node.js verwenden und wann Ajax verwenden?
Antwort
Zunächst sollten Sie über den Unterschied zwischen den beiden lernen, wird die Antwort klar werden.
AJAX werden für einfache asynchrone Anfragen verwendet. Sie benötigen keinen Knotenserver und werden von nahezu jedem Browser unterstützt. Sie werden verwendet, wenn Sie eine Information vom Server abrufen müssen. Sie haben jedoch den Overhead, über HTTP gesendet zu werden, und deshalb müssen sie eine richtige HTTP-Anfrage/Antwort sein (fügt Gewicht hinzu).
WebSockets (verfügbar in einer Node.js/socket.io-Konfiguration) werden verwendet, wenn Sie häufig auf Daten zugreifen oder eine permanente Verbindung zum Server benötigen. Sie können eine Socket-Verbindung herstellen und Pakete vom Server zum Client senden. Dies ist im Vergleich zu einer AJAX-Lösung ein Leichtgewicht, WebSockets werden jedoch von älteren Browsern nicht unterstützt, und Sie müssen einen Server einrichten, der solche Anforderungen verarbeitet.
Socket.IO insbesondere eine Sammlung von verschiedenen Techniken verwendet, so dass Sie besser Browser-Unterstützung erhalten können: lange Polling, mehrteiliger Streaming etc .. Auf diese Weise können Sie das „instant“ Feedback von dem Server haben, es aber nach wie vor in In den meisten Fällen wird HTTP als Protokoll verwendet. Es wird jedoch WebSockets verwenden, wenn sie verfügbar sind (d. H. Vom Browser unterstützt). In einigen Fällen wird Node.js/Socket.io AJAX verwenden.
Wenn Sie arbeiten, nicht auf einem Online-Spiel oder wenn Sie nicht häufig den Zustand Ihrer Anwendung aktualisieren müssen, würde ich mit AJAX anstelle einer Node.js/socket.io Setup vor.
+1 Gute Erklärung. Ich hoffe, Sie können es ein wenig mehr erweitern – samayo
, aber mit jeder Verbindung macht meine App mit dem Server Apache Zuteile einzelne Threads zu jedem von ihnen damit verbrauchen eine ganze Menge von Ressourcen, und derzeit habe ich beide Apache/Nodejs eingerichtet. Ich meine, wenn ich Ajax verwende, um meinen Newsfeed alle 20 Sekunden zu aktualisieren oder Popups zu füllen, wird das nicht eine Menge Ressourcen beanspruchen? – AnuragD
Was Sie im 2. Absatz beschrieben haben, ist WebSockets, nicht SocketIO.SocketIO bietet * Web-Socket * wie Unterstützung, wobei die vom aktuellen Browser unterstützte Übertragung verwendet wird; sei es websockets, iframe, long polling oder sogar flash. – Matt
Nodejs eignet sich hervorragend für Anwendungen, bei denen Sie eine dauerhafte Verbindung zwischen dem Client und dem Server aufrechterhalten müssen. Grundsätzlich, wenn Sie Echtzeit-Daten (Chat-Client, Spiel, etc.) zwischen dem Client und Server Nodejs senden möchten, ist eine gute Option.
Mit Nodejs blockiert diese Art von persistenter Verbindung keine anderen Anfragen. Viele andere Sprachen wie PHP (wo jede Verbindung einen neuen Server-Prozess startet) kämpfen in solchen Situationen und Sie werden wahrscheinlich mit großer CPU-Last enden.
Socket.io und node.js zusammen ist eine noch bessere Option, wenn Echtzeitdaten mit der geringstmöglichen Latenz das Ziel ist. Es wird nur auf Long-Polling zurückgreifen, wenn andere Technologien nicht unterstützt werden, es ist bevorzugt, Web-Sockets zu verwenden.
Natürlich können sowohl Apache (mit PHP) als auch Nodejs AJAX, die Frage sollte wirklich sein, ob das der richtige Weg für Sie ist, Daten zu übertragen, wir müssen mehr darüber wissen, was Sie erreichen wollen!
- 1. Wann socket.io zu verwenden und wann Ajax zu verwenden
- 2. Wann System() verwenden und wann execv *() verwenden?
- 3. Wann "if" und "wann" in Clojure verwenden?
- 4. Wann und wann nicht CoreAnimation verwenden
- 5. Luftstrom: Wann SellerieExecutor und wann MesosExecutor verwenden
- 6. Wann Datenbankansichten verwenden und wann nicht?
- 7. Wann zu verwenden und wann nicht Python 3.5 `erwarten 'verwenden?
- 8. Wann verwenden wir POJO und wann verwenden wir SLSB
- 9. Wann SoapObject und SoapPrimitive verwenden
- 10. Wann MVC und EZB verwenden?
- 11. Wann IEquatable verwenden und warum
- 12. Was und wann Tuple verwenden?
- 13. Wann concat verwenden und anhängen?
- 14. Sollte ich HTTP oder xmlhttprequest auf node.js verwenden? Wann?
- 15. Wann sollte ich RESTful verwenden?
- 16. Wann NSURLProtocol zu verwenden?
- 17. Wann HTTP-Proxy verwenden
- 18. Wann verwenden Sie Tabellencluster?
- 19. Wann Request.RegisterForDispose verwenden?
- 20. Wann nicht ACS verwenden?
- 21. Datenstrukturen - wann welche verwenden?
- 22. Wann Texturansichten zu verwenden
- 23. Wann "window.onload" verwenden?
- 24. Wann "löschen" verwenden?
- 25. Railties - Wann zu verwenden
- 26. Wann selbst zu verwenden?
- 27. Wann verwenden Sie Eigenschaften und wann in Java?
- 28. Wann Vektoren und wann Arrays in C++ verwenden?
- 29. Wann ein Modul zu verwenden, und wann eine Klasse
- 30. Wann sollte ich lineare neuronale Netze verwenden und wann nichtlinear?
Dies ist wie fragen, ob es besser ist, Teppich für die Operation oder Zahnbürste für Volleyball zu verwenden. Sie müssen Ihre Terminologie richtig machen. –