#Barcamp : Le temps réel, Rails 5 et ActionCable : mise au point début 2016

Nous avions fait état dans un précédent article de la situation il y a un an. L’organisation était pour le moins complexe, requérant soit un serveur NodeJS soit un serveur Faye, plus une base de données NoSQL Redis et de nombreuses gems telles que thin ou private_pub.

Les précédentes solutions étudiées avaient en commun d’être toutes à la fois compliquées à comprendre, à expliquer et à maintenir dans un environnement de production, faisant intervenir en production Apache et le module Passenger.

La prochaine version de Rails, attendue depuis fin 2015, inclura une nouvelle fonctionnalité appelée ActionCable qui implémentera nativement les WebSockets. L’avantage de cette future solution sera de conserver l’application dans le même environnement Rails (modèles etc). Il sera possible de lancer le serveur ActionCable séparément du serveur applicatif, ou de créer une route spéciale pour réserver un accès à son API, puisqu’il sera compatible avec Passenger, Unicorn et Puma.

Cette fonctionnalité semble avoir beaucoup évolué au fil du temps, notamment jusqu’à son intégration dans le cœur de Rails 5. Ainsi les tutoriels récents semblent bien plus simples que ceux datant de mi 2015.

Voici quelques bons exemples :

La principale dépendance sera une base NoSQL Redis pour stocker les messages. D’après la page GitHub, le serveur ActionCable devra être redémarré à chaque modification car les objets chargés pour des connexions ouvertes ont une durée de vie très longue. Il n’aura pas accès aux variables en session de l’application mais seulement aux cookies, par exemple pour réaliser une authentification. Il supportera des milliers de connexions simultanées, aussi bien d’un seul utilisateur (onglets de navigateur) que de différents, et tirera parti des threads.

Avantages

  • Intégré nativement dans Rails 5
  • Des connexions maintenues ouvertes tout au long de la vie de la page web
  • Des connexions full-duplex, permettant au client et au serveur de dialoguer dans les deux sens en même temps
  • Par effet de bord, une forte réduction des échanges sur le réseau

Inconvénients

  • Les requêtes Websocket ne peuvent être mises en cache
  • 30% des internautes (source ?) utilisent des navigateurs qui ne supporteraient pas encore les Websockets

Une réponse sur “#Barcamp : Le temps réel, Rails 5 et ActionCable : mise au point début 2016”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.