NCS : un serveur applicatif

Lors de mon dernier article sur nodecast je terminais sur la possibilité d’y intégrer un serveur web pour remplacer le serveur ruby Thin qui exposait l’API HTTP REST. C’est maintenant chose faite, la libqxt via son module QxtWeb m’a permis de mettre en œuvre assez simplement un serveur web dans un thread du serveur ncs. J’ai migré tout le projet sur github, le code du serveur est visible ici : http_api.cpp. Ce how to m’a été très utile : How to create a simple webservice using qt and libqxt

Dans la lancée j’ai également intégré un serveur XMPP grâce à QXmpp  ce qui permet au client Geekast d’effectuer des push en XMPP. Il fonctionne également dans son propre thread. Outre la rapidité de ce protocole face à HTTP, cela va permettre aux clients Geekast d’avoir une socket persistante avec le serveur ncs et donc permettre à celui-ci de faire du push vers tous les clients connectés. Les usages restent à définir mais cette possibilité ouvre un grand nombre de portes. Par exemple proposer la possibilité d’agir sur tous ses clients geekast depuis l’interface web (kill de processus, etc). L’envoi par HTTP sera toujours présent dans le client, au cas où la connexion XMPP est impossible (firewall, etc).

L’autre avancée est sur le format de donnée entre le client et le serveur, qui migre du XML vers JSON via QxtJson. Ainsi le serveur ncs qui reçoit les payload en json peut directement les transformer en bson object, format binaire de MongoDB. Plus besoin de passer par un lourd parsing du xml et des conversions vers des tableaux pour en extraire les données. La ligne suivante montre la simplicité d’une telle conversion :

bson::bo m_bo_json = mongo::fromjson(json.toStdString());

Le serveur ncs est donc maintenant autonome, Ruby est uniquement utilisé pour l’exécution du frontal web en Ruby on Rails.

Pour finir, voici un schéma du fonctionnement interne du serveur ncs.

About these ads

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s