Notifications via websocket avec Symfony2 et Node.js

La réactivité des applications web est un critère essentiel de l’expérience utilisateur. Fini le temps des requêtes AJAX exécutées toutes les X secondes, ou pire des rechargements de page pour actualiser le contenu ! Les notifications en direct se font aujourd’hui très simplement grâce aux websockets.

Les solutions serveur ne manquent pas, de l’incontournable socket.io (node.js) au plus récent ratchet (php). Et coté client, HTML5 fournit une API WebSocket… encore peu répandue malheureusement !

La stack retenue

Pour cet exemple, nous allons utiliser la version node.js de Faye server, qui a l’avantage d’être très simple à mettre en place et de d’intégrer directement un client JavaScript.

Stack Symfony2 Faye

  • Une application backend Symfony2
  • Une application client HTML / JS
  • Une passerelle Faye server (node.js) pour l’envoi de notifications au client

LexikJWTAuthenticationBundle – Symfony2 REST API Authentification

Lexik vous présente aujourd’hui LexikJWTAuthenticationBundle, destiné à vous aider à mettre en place rapidement un système d’authentification entre votre API REST Symfony2 et d’éventuels clients Javascript (AngularJS, Ember.js, Backbone.js) ou mobiles.

Contexte

Les bonnes ressources concernant la mise en place d’une API REST Symfony2 ne manquent pas :

Mais peu d’informations claires sont disponibles sur l’authentification auprès d’une telle API. Et les stratégies dans ce domaine ne manquant pas, il va falloir faire un choix… Et chez Lexik on a  choisit le petit standard qui monte : le Json Web Token (JWT).

Intégration de Magento et Symfony2

Ayant à réaliser une boutique plutôt complexe, mais n’étant pas spécialistes du développement Magento, nous avons voulu tester l’association de Symfony2 en front end et Magento en back end.

L’intégration de ces deux systèmes est intéressante à plus d’un titre. Vous souhaitez afficher une liste de produits stockés dans une boutique Magento ? Récupérer des commandes pour les traiter dans un ERP réalisé avec Symfony2 ? Ou pourquoi pas développer une boutique entière en vous concentrant uniquement sur la logique ?

Nous allons voir ici comment utiliser l’API de Magento depuis Symfony2 : à distance en utilisant le web service, ou en local en faisant directement appel au noyau Magento.