mardi 3 août 2010

Comet : Se passer de bayeux ?

Comet, c'est toute une galaxie en mouvement.

Dans un des billets précédents je saluait les avancées qui se faisaient en ce qui concerne le javascript coté serveur notamment pour implémenter du Comet dans nos applis web.
Je découvrais également node.js.

La façon la plus populaire actuellement de faire du Comet et d'implémenter le protocole de Bayeux. C'est ce que fait la librairie Faye pour Node.js mais ausi ce que fait CometD pour Jetty et autres (cf http://cometd.org/documentation/cometd)

Sans renier l'énorme potentiel de node.js (c'est tout simplement hallucinant toutes les portes que ca ouvre), je me suis longuement interrogé sur la pertinence du protocole de Bayeux.

Ce qui a alimenté ma réflexion c'est notamment la série d'article publié sur comet daily : http://cometdaily.com/2008/02/07/colliding-comets-battle-of-the-bayeux-part-1/
On nous y explique l'intérêt de ce protocole mais aussi Michael Carter y apporte une vue très critique sur l'état de ce protocole /de l'API associée compte tenu des velléités du projet et des besoins du marché.
Grosso modo Michael Carter reproche à Bayeux de n'être pas suffisamment modulaire et de ne pas offrir la souplesse nécessaire pour que Bayeux puisse être adopté de façon généralisée par tous les développeurs ayant besoin de faire du comet.

J'ai ensuite découvert, toujours grâce au site comet daily, Hookbox
Hookbox’s purpose is to ease the development of real-time web applications, with an emphasis on tight integration with existing web technology. Put simply, Hookbox is a web-enabled message queue. Browers may directly connect to Hookbox, subscribe to named channels, and publish and receive messages on those channels in real-time. An external application (typically the web application itself) may also publish messages to channels by means of the Hookbox REST interface. All authentication and authorization is performed by an external web application via designated “webhook” callbacks.

Je suis énormément séduit par Hookbox :
- C'est open source
- C'est prés à l'emploi
- C'est très adapté dans un contexte où on fait du off-board comet (ce qui est le cas quand on développe en PHP).
- Malgré sa jeunesse (quelques semaines) c'est un projet déjà relativement bien documenté
- C'est écrit par des anciens du projet Orbited.
- Ca correspond tout à fait à nos besoins immédiats (site de jeu multi-joueur)
Bref, plein de bonnes raisons !

Hoobook n'implémente pas Bayeux... c'est peut être tant mieux !
Ce que j'attend d'un serveur Comet n'est pas de me faire plein de promesses mais de pouvoir s'intégrer à mon applicatif de façon naturelle et presque transparente. C'est à dire sans que cela ne nécessite d'appréhender des protocoles et de développer tout un tas de choses.
Que Hoobook soit en Python et non en JS c'est certes dommage mais ca ne gache rien.
Par contre ce qui est un peu pénalisant c'est que pour le moment on ai un simple client JS (pour le browser) mais pas de client ActionScript (pour flash/flex).

Quelque prédictions : je pari que Hoobook va devenir le serveur de référence pour toute la communauté PHP devant faire du Comet (il existe déjà un module Drupal pour) et que cometd/Bayeux va devenir le serveur de référence pour toute la communauté Java.

Bonne lecture.

Aucun commentaire: