Détails
Que sont le sondage long, les Websockets, les événements envoyés par le serveur (SSE) et Comet ?
J'ai essayé de lire quelques articles, mais je ne comprends pas encore très bien les concepts.
Quelqu'un pourrait-il essayer de m'expliquer ce que sont ces technologies ?
- Interrogation longue durée
- Événements envoyés par le serveur
- Websockets
- Comet
Une chose que j'ai rencontrée à chaque fois est que le serveur maintient une connexion ouverte et envoie des données au client. Comment la connexion est-elle maintenue ouverte, et comment le client obtient-il les données poussées ? (Comment le client utilise-t-il les données, un peu de code pourrait peut-être aider).
Maintenant, laquelle de ces méthodes dois-je utiliser pour une application en temps réel ? J'ai beaucoup entendu parler des websockets (avec socket.io [une bibliothèque node.js]) mais pourquoi pas PHP ?
997
3
Dans les exemples ci-dessous, le client est le navigateur et le serveur est le serveur web qui héberge le site web.
Avant de pouvoir comprendre ces technologies, vous devez d'abord comprendre le trafic web HTTP classique.
HTTP classique :
![HTTP][1]
Interrogation Ajax :
!Ajax Polling][2]
Ajax Long-Polling :
!Ajax Long-Polling][3]
HTML5 Server Sent Events (SSE) / EventSource :
!HTML5 SSE][9]
Websockets HTML5 :
!HTML5 WebSockets][15].
Comète :
Comet est une collection de techniques antérieures à HTML5 qui utilisent le streaming et le long-polling pour réaliser des applications en temps réel. Pour en savoir plus, consultez [wikipedia][16] ou [cet][17] article.
Maintenant, laquelle de ces techniques dois-je utiliser pour une application en temps réel (que je dois > coder) ?
Vous pouvez utiliser PHP avec les WebSockets, consultez [Ratchet][18].
[1] : http://i.stack.imgur.com/TK1ZG.png [2] : http://i.stack.imgur.com/qlMEU.png [3] : http://i.stack.imgur.com/zLnOU.png [4] : https://developer.mozilla.org/en-US/docs/Web/API/EventSource/EventSource [5] : https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events [6] : http://html5doctor.com/server-sent-events/#api [7] : http://www.html5rocks.com/en/tutorials/eventsource/basics/ [8] : http://jaxenter.com/tutorial-jsf-2-and-html5-server-sent-events-42932.html [9] : http://i.stack.imgur.com/ziR5h.png [10] : http://pusher.com/ [11] : http://www.leggetter.co.uk/real-time-web-technologies-guide [12] : http://www.developerfusion.com/article/143158/an-introduction-to-websockets/ [13] : https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications [14] : http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/ [15] : http://i.stack.imgur.com/CgDlc.png [16] : http://en.wikipedia.org/wiki/Comet_%28programming%29 [17] : http://www.ibm.com/developerworks/web/library/wa-reverseajax1/index.html [18] : http://socketo.me/
Tieme a mis beaucoup d'efforts dans son excellente réponse, mais je pense que le cœur de la question du PO est de savoir comment ces technologies sont liées à PHP plutôt que de savoir comment chaque technologie fonctionne.
PHP est le langage le plus utilisé dans le développement web, en dehors de l'évident html, css, et javascript côté client. Pourtant, PHP a deux problèmes majeurs lorsqu'il s'agit d'applications en temps réel :
Notez que PHP a des extensions pour fournir des boucles d'événements (comme libevent) et des threads (comme pthreads) dans l'espace utilisateur de PHP, mais très, très, très peu d'applications les utilisent.
PHP 7 sera un grand pas en avant pour résoudre ces problèmes, et semble très prometteur comme plateforme pour les applications en temps réel.
J'ai essayé d'en prendre note et j'ai rassemblé et écrit des exemples d'un point de vue java.
[HTTP pour les développeurs Java][1]
[Reverse Ajax - Old style] [2] (en anglais)
[Manipulation asynchrone du côté serveur] [3]
[Ajax inversé - Nouveau style] [4]
[Événements envoyés par le serveur] [5]
Je le mets ici pour tout développeur java qui se penche sur le même sujet. [1] : http://www.developers-notebook.info/2015/09/http-for-java-developer.html [2] : http://www.developers-notebook.info/2015/09/reverse-ajax.html [3] : http://www.developers-notebook.info/2015/08/async-handling-servlet-30.html [4] : http://www.developers-notebook.info/2016/08/reverse-ajax-new-school.html [5] : http://www.developers-notebook.info/2016/08/server-sent-events.html