web-dev-qa-db-fra.com

Utilisation de WebSocket sur le serveur Apache

Avec tout le buzz autour des WebSockets, il est assez difficile de trouver une bonne procédure pas à pas pour les utiliser avec un serveur Apache sur Google.

Nous développons un plugin, en PHP (symfony2), qui fonctionnera de temps en temps comme une instance de chat. Et nous trouvons les WebSockets plus intéressants, standard et rapides que AJAX pour cette question. Le fait est que nous n'avons pas beaucoup de ressources d'administrateur système dans notre groupe et nous avons du mal à recueillir de bonnes informations sur les questions suivantes:

  • Pouvons-nous exécuter une instance WebSocket sur un serveur dédié Apache traditionnel, et si oui, avez-vous des liens utiles pour nous?
  • Si nous devons modifier le serveur, quel type d'outils recommanderiez-vous en sachant que nous ne sommes pas trop qualifiés en sysadmin, nous ne pouvons donc pas nous permettre d'avoir un niveau de maintenance élevé ***.

Merci beaucoup,

ps: nous créerons un lien vers votre blog/site car nous publierons un article technique/informatif sur notre devblog sur cette partie de notre application.

Merci encore!

38
Edouard Reinach

Un chemin consiste à utiliser un serveur de sockets Web installé indépendant.

Pour PHP vous pouvez essayer: http://code.google.com/p/phpwebsocket/ ou http://github.com/Devristo/phpws /

Il existe d'autres projets que vous pouvez également essayer.

Fondamentalement, vous devez télécharger, décompresser et commencer à exécuter le processus.

Sur le frontend, vous aurez une connexion javascript au serveur sur le port spécifique.

La plupart des serveurs Websocket ont une démo qui fait écho à tout ce qu'elle entend, c'est donc un bon endroit pour écrire du code de test. Vous pouvez même trouver une implémentation de chat rudimentaire.

La partie délicate est de surveiller le serveur de socket Web et de s'assurer qu'il fonctionne correctement et en continu.

Essayez de tester sur autant de navigateurs/appareils que possible car cela décidera de l'implémentation du serveur Websocket que vous choisirez. Il y a des anciens et des nouveaux protocoles à surveiller.

14
zaf

Comme @zaf l'indique, vous êtes plus susceptible de trouver une solution autonome PHP - pas quelque chose qui s'exécute dans Apache. Cela dit, il y a un module Apache WebSocket .

Cependant, le problème fondamental est qu'Apache n'a pas été construit en gardant à l'esprit de nombreuses connexions persistantes. Avec PHP, il repose sur l'idée que les demandes sont faites et que les réponses sont rapidement renvoyées. Cela signifie que les ressources peuvent être utilisées très rapidement si vous maintenez les demandes ouvertes et que vous devrez vous pencher assez rapidement sur la mise à l'échelle horizontale.

Personnellement, je pense que vous avez deux options:

  1. Utilisez une autre solution de technologie Web en temps réel et communiquez entre votre application Web et votre infrastructure Web en temps réel à l'aide de files d'attente ou de demandes de courte durée (services Web).
  2. Déchargez la gestion des connexions persistantes et la mise à l'échelle de l'infrastructure Web en temps réel vers un service hébergé en temps réel. Je travaille pour Pusher et nous tombons dans cette catégorie.

Pour les options auto-hébergées et hébergées, vous pouvez consulter mon guide technique Web en temps réel .

17
leggetter

J'ai introduit un autre serveur websocket: PHP Ratchet ( Github ).

Il s'agit d'une liste meilleure et complète des codes côté client et serveur et de la prise en charge du navigateur.

Veuillez vérifier cela lien .

7
ShahRokh