Quels sont le Long du Scrutin, les Websockets, Server-Sent Events (ESS) et de la Comète?
J'ai essayé la lecture de quelques articles, mais je ne suis pas très clair sur les concepts encore.
Un homme comme pour une prise à m'expliquer ce que ces technologies sont:
- Le Long Du Scrutin
- Server-Sent Events
- Websockets
- Comète
Une chose que je suis venu à travers de tous les temps a été, le serveur conserve une connexion ouverte et pousse des données au client. Comment est la connexion ouverte, et comment le client d'obtenir la poussée? (Comment le client ne peut utiliser les données, peut-être un code peut aider?)
Maintenant, lequel des deux dois-je utiliser pour un réel moment de l'app. J'ai entendu beaucoup de choses sur les websockets (avec la prise.io [un node.js bibliothèque]), mais pourquoi ne pas en PHP?
- En temps réel websocket ou webrtc? Il y a une bibliothèque de websocket en php, vous avez besoin d'écrire du code supplémentaire pour qu'il fonctionne à l'aide de ZMQ ou simplement de programmation socket, nodeJs est construit pour cette si son facilement disponibles. La raison websocket n'est pas facilement disponible en php, c'est que vous devez exécuter un supplément de terminal, et l'a gardé en cours d'exécution afin que le serveur websocket est facilement disponible, vous disposez de deux serveurs bas de gamme. et la structure, le php n'est pas un événement la structure comme le javascript donc il n'y a qu', websocket utilise une structure événement afin de capturer et d'envoyer des messages.
- En outre: la Comète et ServerSent Événements sont de PHP solution de contournement de réalisation presque en temps réel(pas vraiment) sans création de 2 serveurs.
Vous devez vous connecter pour publier un commentaire.
Dans les exemples ci-dessous, le client est le navigateur et le serveur est le serveur web qui héberge le site.
Avant que vous pouvez comprendre ces technologies, vous devez comprendre classique HTTP trafic web en premier.
HTTP:
Ajax D'Interrogation:
Ajax Le Long Du Scrutin:
HTML5 Serveur a Envoyé des Événements (ESS) /EventSource:
Le serveur envoie un événement pour le client quand il y a des nouvelles informations disponibles.
Websockets HTML5:
Le serveur et le client peut maintenant envoyer des messages les uns aux autres lorsque de nouvelles données (de chaque côté) est disponible.
Comète:
Comète est un ensemble de techniques d'avant HTML5 qui utilisent la diffusion en continu et de longue interrogation pour réaliser des applications en temps réel. Lire plus sur wikipédia ou cette article.
Vous pouvez utiliser PHP avec les WebSockets, découvrez Ratchet.
Tieme mis beaucoup d'efforts dans son excellente réponse, mais je pense que le cœur de la Fpo question est de savoir comment ces technologies concernent PHP plutôt que la façon dont chaque technologie fonctionne.
PHP est la langue la plus utilisée dans le développement web en outre l'évident côté client html, css, et javascript. Pourtant, PHP a 2 problèmes majeurs quand il s'agit pour les applications en temps réel:
1) de PHP qui a commencé comme un très de base de CGI. PHP a beaucoup progressé depuis qu'il est tôt, mais c'est arrivé dans de petites étapes. PHP avait déjà plusieurs millions d'utilisateurs par le temps, il est devenu le embed-mesure et flexible de la bibliothèque C qu'il est aujourd'hui, dont la plupart étaient à la charge sur le modèle antérieur de l'exécution, de sorte qu'il n'a pas encore fait une tentative sérieuse pour échapper à la cgi modèle interne. Même l'interface de ligne de commande appelle la bibliothèque PHP (libphp5.donc sur linux, php5ts.dll sur windows, etc) comme si c'est encore un cgi traitement d'un GET/POST demande. Il s'exécute encore le code comme si il suffit de créer une "page", puis la fin de son cycle de vie. En conséquence, il a très peu de support pour le multi-thread ou de la programmation événementielle (au sein de l'espace utilisateur PHP), il est actuellement peu pratique en temps réel, multi-applications de l'utilisateur.
Noter que PHP n'ont des extensions de fournir une boucle d'événement (comme les libevent) et les fils (comme les pthreads) dans l'espace utilisateur PHP, mais très, très, peu d'applications utilisent ces.
2) de PHP a encore beaucoup de problèmes avec la collecte des ordures. Bien que ces questions ont été constamment à améliorer (probablement, il est plus grand pas à la fin du cycle de vie, comme décrit ci-dessus), même le meilleur des tentatives au long de la création de l'exécution des applications PHP besoin d'être redémarré sur une base régulière. Ce aussi le faire, peu pratique pour les applications en temps réel.
PHP 7 sera une grande étape pour résoudre ces problèmes, et semble très prometteuse en tant que plate-forme pour les applications en temps réel.
J'ai essayé de faire une remarque à ce sujet et ont recueilli et par écrit, des exemples à partir d'un perspective java.
HTTP pour les Développeurs Java
Reverse Ajax - style Ancien
Async la Manipulation sur le côté serveur
Reverse Ajax - Nouveau style
Serveur A Envoyé Des Événements
De le mettre ici pour tous les développeurs java qui est à la recherche dans le 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 quand il est sur les WebSockets. Par conséquent, "des Notifications via PHP Node.js" serait un excellent concept.
Voir cet exemple:
Création d'un Chat en Temps Réel Application avec PHP et Node.js