Nous envisageons de construire une vaste application web qui fournit une mise à jour et un affichage des données en temps réel (qqch comme la bourse). Il est nécessaire d'établir une communication bidirectionnelle efficace entre le serveur et le client. Après recherche, les web-sockets html5 semblent être un must. Cependant, il y a plusieurs problèmes concernant la compatibilité et le fallback ainsi que le support du serveur. Nous avons besoin d'une solution simple et stable en php de préférence et d'une intégration apache. Nous avons fait quelques tests avec phpwebsockets et pywebsockets mais ils ne semblent pas si stables. Que proposeriez-vous comme solution plus stable et testée, quelque chose comme kaazing peut-être mais en php ? Merci d'avance.
Réponses
Trop de publicités?Ce que vous voulez utiliser est Socket.IO qui prend en charge tous les problèmes liés aux navigateurs croisés et fournit des solutions de repli transparentes pour les anciens navigateurs. Socket.IO a été conçu pour être utilisé avec Node.js, mais il peut maintenant être utilisé avec un certain nombre d'autres applications. différents langages côté serveur .
Cependant, je voudrais PAS recommande d'utiliser les Web Sockets avec PHP. En effet, PHP n'est pas conçu pour les communications bidirectionnelles de longue durée et bloquera un processus/thread Apache entier à chaque nouvelle connexion.
Je vous recommande vivement d'utiliser un langage comme Node.js côté serveur, qui peut facilement gérer des milliers de connexions longues sans aucun problème.
Avez-vous essayé COMET ?
Il y a beaucoup d'exemples d'applications COMET+PHP sur le web.
http://www.zeitoun.net/articles/comet_and_php/start
http://ajaxian.com/archives/comet-with-php
http://www.phpclasses.org/blog/post/58-Responsive-AJAX-applications-with-COMET.html
Nodejs pour deux raisons :
1 : Vous pouvez utiliser le même langage sur le client et le serveur, ce qui permet une meilleure réutilisation du code.
2 : La boucle d'événements intégrée rend le javascript idéal pour les situations du type "faire un tout petit peu de travail et ensuite dormir pendant 20 secondes".
Il faut cependant aimer le javascript pour le prendre sur le serveur.
Je choisirais probablement Node.js. Bien que j'aime javascript, je n'ai pas bu le cool-aid Node.js. (Fair warning )
Mais Node.js vous permet d'utiliser Socket.io - et c'est ce que vous voulez utiliser pour que votre communication en temps réel fonctionne de manière transparente sur "tous" les systèmes. La communication entre PHP et Node.js peut être gérée par des sockets, une base de données ou d'autres choses insensées.