Solid Cable : WebSockets et temps réel sans Redis
Bienvenue dans ce second article de notre série sur le Triumvirat "Solid" dans Rails 8 ! Aujourd’hui, on parle d’un sujet brûlant si vous souhaitez faire un Rails app qui vit dans le présent : le temps réel.
✨ Solid Cable, c’est la nouvelle façon d’intégrer des WebSockets dans Rails sans se prendre la tête avec Redis ou des serveurs externes. C’est natif, c’est simple, et c’est puissant.
Mais pourquoi le temps réel est-il si important aujourd’hui ? Parce que vos utilisateurs s’y attendent. Voici quelques cas concrets où Solid Cable brille :
- 💬 Un chat en direct entre utilisateurs, sans recharger la page
- 📈 Un dashboard qui se met à jour automatiquement quand les données changent
- 🔔 Des notifications instantanées dès qu’un événement survient
- 🛒 Un panier partagé qui se synchronise en live entre plusieurs appareils
- 🎮 Une app collaborative où plusieurs personnes interagissent en même temps
Avec Solid Cable, tout ça devient possible sans friction. Dans cet article, on va voir comment l’installer, le configurer, et surtout comment l’utiliser pour créer des expériences dynamiques et modernes.
N'hésitez pas à parcourir mes autres articles sur le sujet Triumvirat "Solid" qui n'aura plus de secret pour vous !
- "Solid Cache" : Ne plus dépendre de Redis pour le cache dans Rails
- "Solid Cable" : Des websockets et du temps réel simplement et sans prise de tête (vous êtes ici)
- "Solid Queue" : Des taches de fonds à la sauce Rails
- Le triumvirat appliqué à un projet complet
Accrochez ça va être du solide :)
Solid Cable : WebSockets Sans Redis dans Rails 8
Comprendre Action Cable et le temps réel
Action Cable est la solution de Rails pour ajouter des fonctionnalités en temps réel à votre application. Pensez à :
- Un chat en direct
- Des notifications instantanées
- Des tableaux de bord avec données live
- Une collaboration en temps réel (comme Google Docs)
Comment fonctionnent les WebSockets ?
Les WebSockets sont comme un téléphone toujours décroché entre le client et le serveur :
HTTP classique :
WebSocket :
Le rôle de Solid Cable
Traditionnellement, Action Cable utilisait Redis comme "central téléphonique" pour router les messages entre les différents processus de votre application.
Solid Cable remplace Redis par une table de base de données avec un système de polling (interrogation régulière).
L'architecture de Solid Cable
Solid Cable crée une table simple :
Le fonctionnement :
- Un client se connecte via WebSocket
- Quand un message doit être envoyé, il est écrit dans cette table
- Un système de polling vérifie régulièrement (par défaut toutes les 0.1 secondes) s'il y a de nouveaux messages
- Les messages sont transmis aux clients connectés
- Les vieux messages sont automatiquement supprimés après 1 jour
Installation et Configuration
Sur Rails 8
Comme pour Solid Cache, Solid Cable est activé par défaut en production sur Rails 8 !
Vérifiez votre config/cable.yml :
Configuration pour le développement
Par défaut, Rails 8 utilise l'adaptateur async en développement. Pour utiliser Solid Cable en dev :
Puis configurez votre config/database.yml :
Exemple Complet : Chat en Temps Réel
Construisons une application de chat simple pour illustrer Solid Cable.
Étape 0 : Créer un nouveau projet
Configurez cable.yml pour utiliser solid_cable au lieu de async en développement.
En développement il faut ajouter le schéma de la base de donnée solid_cable dans la base de donnée. En production, on aura une base de donnée dédiée donc pas besoin.
Étape 1 : Créer le modèle
Étape 2 : Créer le canal
Étape 3 : Le modèle avec broadcast
Étape 4 : Le contrôleur
Étape 5 : La vue
Étape 6 : Routes
Tester en Action
- Lancez votre serveur : bin/dev
- Ouvrez deux fenêtres de navigateur sur http://localhost:3000
- Tapez un message dans une fenêtre
- Voyez-le apparaître instantanément dans l'autre !
Ce chat en temps réel s’appuie sur Turbo Streams et Solid Cable: la page s’abonne au flux avec turbo_stream_from "chat" . Lorsqu’un message est soumis via form_with , le contrôleur crée un enregistrement Message .
Après le commit, le modèle déclenche broadcast_append_to "chat" , et Solid Cable (adapter ActionCable en production) persiste et distribue ce broadcast.
Côté client, @hotwired/turbo-rails reçoit automatiquement le flux et met à jour le DOM en ajoutant le nouveau message dans #messages , sans JavaScript personnalisé ni rechargement de page.
Monitoring et Debugging
Vérifier les messages dans la base
Voir les logs
Solid Cable vs Autres Solutions
|
Solution
|
Vitesse
|
Setup
|
Scalabilité
|
Cas d'usage
|
|---|---|---|---|---|
|
Solid Cable
|
Bonne
|
Très simple
|
Moyenne
|
Apps petites/moyennes
|
|
Action Cable (Redis)
|
Très bonne
|
Simple
|
Bonne
|
Apps moyennes
|
|
AnyCable
|
Excellente
|
Complexe
|
Excellente
|
Apps à grande échelle
|
Utilisez Solid Cable si :
- Vous démarrez une nouvelle app Rails 8
- Vous avez besoin de fonctionnalités temps réel basiques
- Vous voulez éviter Redis
- Vous avez moins de 1000 connexions simultanées
Passez à Action Cable + Redis si :
- Vous avez besoin de meilleures performances
- Vous avez déjà Redis dans votre stack
Passez à AnyCable si :
- Vous avez des milliers de connexions simultanées
- La latence est critique
Conclusion : Solid Cable, le temps réel sans compromis
Solid Cable redéfinit la manière dont on pense le temps réel dans Rails. Fini les configurations complexes avec Redis ou des serveurs externes : tout fonctionne en local, avec une intégration fluide et une API familière. Que ce soit pour un chat, des notifications, des dashboards ou des expériences collaboratives, Solid Cable permet de créer des interfaces réactives et modernes sans sacrifier la simplicité.
Avec Rails 8 qui l’adopte officiellement, Solid Cable devient un outil incontournable pour tout développeur qui veut offrir une expérience utilisateur dynamique et instantanée.
⚡ Moins de dépendances, plus d’interactions. Solid Cable, c’est Rails en temps réel, comme il se doit.
