J'ai essayé de lire quelques articles, mais je ne suis pas encore très clair sur les concepts.
Quelqu'un voudrait-il tenter de m'expliquer en quoi consistent ces technologies:
- Interrogation longue
- Événements envoyés par le serveur
- Websockets
- Comète
Une chose que j'ai rencontrée à chaque fois est que le serveur maintient une connexion ouverte et envoie les données au client. Comment la connexion est-elle maintenue ouverte et comment le client obtient-il les données transmises? (Comment le client utilise-t-il les données, peut-être qu'un code pourrait aider?)
Maintenant, lequel d'entre eux 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?
php
websocket
comet
long-polling
server-sent-events
user1437328
la source
la source
Réponses:
Dans les exemples ci-dessous, le client est le navigateur et le serveur est le serveur Web hébergeant le site Web.
Avant de comprendre ces technologies, vous devez d'abord comprendre le trafic Web HTTP classique .
HTTP standard:
Interrogation Ajax:
Ajax Long-Polling:
Événements envoyés par le serveur HTML5 (SSE) / EventSource:
Le serveur envoie un événement au client lorsque de nouvelles informations sont disponibles.
Websockets HTML5:
Le serveur et le client peuvent désormais s’envoyer des messages lorsque de nouvelles données (de chaque côté) sont disponibles.
Comète:
Comet est un ensemble de techniques antérieures à HTML5 qui utilisent la diffusion en continu et l'interrogation longue pour réaliser des applications en temps réel. En savoir plus sur wikipedia ou cet article.
Vous pouvez utiliser PHP avec WebSockets, consultez Ratchet .
la source
Tieme a mis beaucoup d'efforts dans son excellente réponse, mais je pense que la question centrale des OP est de savoir comment ces technologies sont liées à PHP plutôt que comment chaque technologie fonctionne.
PHP est le langage le plus utilisé dans le développement Web, outre le côté client évident html, css et javascript. Pourtant, PHP a 2 problèmes majeurs en ce qui concerne les applications en temps réel:
1) PHP a commencé comme un CGI très basique. PHP a progressé très loin depuis ses débuts, mais cela s'est produit par petites étapes. PHP comptait déjà plusieurs millions d'utilisateurs au moment où il est devenu la bibliothèque C flexible et intégrable qu'elle est aujourd'hui, dont la plupart dépendaient de son modèle d'exécution antérieur, donc elle n'a pas encore fait une tentative solide pour échapper à la modèle cgi en interne. Même l'interface de ligne de commande appelle la bibliothèque PHP (libphp5.so sur linux, php5ts.dll sur windows, etc.) comme s'il s'agissait toujours d'un cgi traitant une requête GET / POST. Il exécute toujours le code comme s'il ne lui restait qu'à créer une "page" et à mettre fin à son cycle de vie. Par conséquent, il prend très peu en charge la programmation multi-thread ou événementielle (dans l'espace utilisateur PHP), ce qui la rend actuellement peu pratique pour les applications multi-utilisateurs en temps réel.
Notez que PHP a des extensions pour fournir des boucles d'événements (telles que libevent) et des threads (tels que pthreads) dans l'espace utilisateur PHP, mais très, très peu d'applications les utilisent.
2) PHP a toujours des problèmes importants avec la collecte des ordures. Bien que ces problèmes se soient constamment améliorés (il s'agit probablement de la meilleure étape pour mettre fin au cycle de vie comme décrit ci-dessus), même les meilleures tentatives de création d'applications PHP de longue durée nécessitent d'être redémarrées régulièrement. Cela le rend également peu pratique pour les applications en temps réel.
PHP 7 sera également une excellente étape pour résoudre ces problèmes et semble très prometteur en tant que plate-forme pour les applications en temps réel.
la source
J'ai essayé d'en prendre note et j'ai rassemblé et écrit des exemples dans une perspective java .
HTTP pour les développeurs Java
Ajax inversé - Style ancien
Gestion asynchrone côté serveur
Ajax inversé - Nouveau style
Événements envoyés par le serveur
Le mettre ici pour tout développeur java qui se penche sur le même sujet.
la source
Vous pouvez facilement utiliser Node.JS dans votre application Web uniquement pour la communication en temps réel. Node.JS est vraiment puissant quand il s'agit de WebSockets. Par conséquent, "Notifications PHP via Node.js" serait un excellent concept.
Voir cet exemple: Création d'une application de chat en temps réel avec PHP et Node.js
la source