J'ai essayé de lire certains 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:
Une chose que je rencontrais à chaque fois était que le serveur maintenait une connexion ouverte et transmettait des 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 devrais-je utiliser pour une application en temps réel? J'ai beaucoup entendu parler de websockets (avec socket.io [une bibliothèque de noeuds.js]), mais pourquoi pas PHP?
Dans les exemples ci-dessous, le client est le navigateur et le serveur est le serveur Web hébergeant le site Web.
Avant de pouvoir comprendre ces technologies, vous devez d'abord comprendre le trafic Web classique .
Le serveur envoie un événement au client lorsque de nouvelles informations sont disponibles.
Le serveur et le client peuvent désormais s'échanger des messages lorsque de nouvelles données (de chaque côté) sont disponibles.
Comet est un ensemble de techniques antérieures à HTML5 qui utilisaient la diffusion en continu et les longues interrogations pour réaliser des applications en temps réel. En savoir plus sur l'article wikipedia ou this .
Maintenant, lequel d’entre eux devrais-je utiliser pour une application en temps réel (que je dois coder)? J'ai beaucoup entendu parler de websockets (avec socket.io [une bibliothèque node.js]) mais pourquoi pas PHP?
Vous pouvez utiliser PHP avec WebSockets, consultez Ratchet .
Tieme a beaucoup travaillé sur son excellente réponse, mais je pense que le cœur de la question des PO est de savoir comment ces technologies se rapportent à PHP plutôt qu'à la manière dont chaque technologie fonctionne.
PHP est le langage le plus utilisé dans le développement Web, en plus du langage client évident, html, css et javascript. Pourtant, PHP a deux 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 beaucoup progressé depuis ses débuts, mais cela s'est fait par petites étapes. PHP comptait déjà plusieurs millions d'utilisateurs au moment où il est devenu la bibliothèque C intégrée et flexible qu'il est aujourd'hui, dont la plupart dépendaient de son modèle d'exécution précédent, ce qui n'a donc pas encore été fait. une tentative solide d'échapper au 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 demande GET/POST. Il exécute toujours le code comme s'il suffisait de créer une "page" puis de terminer son cycle de vie. De ce fait, la programmation multi-thread ou événementielle (au sein de PHP espaces-utilisateur) est très peu prise en charge, ce qui la rend actuellement peu pratique pour les applications multi-utilisateurs en temps réel.
Notez que PHP possède des extensions pour fournir des boucles d'événement (telles que libevent) et des threads (tels que pthreads) dans PHP espace utilisateur, mais très très peu d'applications les utilisent.
2) PHP a toujours des problèmes importants avec le garbage collection. Bien que ces problèmes se soient constamment améliorés (ce qui est probablement le plus grand pas en fin de cycle de vie décrit ci-dessus), même les meilleures tentatives pour créer des applications longues PHP 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 applications en temps réel.
J'ai essayé de prendre des notes à ce sujet et de rassembler et d'écrire des exemples d'un point de vue Java .
Gestion asynchrone côté serveur
Événements envoyés par le serveur
Le mettre ici pour tout développeur Java qui s'intéresse au même sujet.
Vous pouvez facilement utiliser Node.JS dans votre application Web uniquement pour la communication en temps réel. Node.JS est vraiment puissant lorsqu'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 discussion en temps réel avec PHP et Node.js