veilletech.fr
4 nov. Feed du jour
#07 LARAVEL Article

Inertia 3.11 : des props qui se rechargent en direct

Le temps réel sans écrire une ligne de polling.

Inertia.js 3.11.0 et inertia-laravel 3.7.0 ajoutent les live props : une prop marquée Inertia::live() se recharge quand un événement de diffusion arrive, sans polling. Les transports Echo/Reverb, Pusher et Action Cable sont fournis, avec un plafond d'un rechargement par prop et par seconde. Inertia::broadcastProps() évite même la requête de rechargement en transportant la valeur dans l'événement.

2 min de lectureintermédiairevidéo 1:15
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Comment ça marche
  3. Les garde-fous
  4. Autour
  5. Comment s'y prendre
  6. À retenir

Ce qui se passe

Inertia.js 3.11.0 et inertia-laravel 3.7.0 (Pascal Baljet) ajoutent les live props. Une live prop se recharge quand un événement de diffusion arrive : la page se met à jour sans interrogation périodique du serveur.

Comment ça marche

Côté serveur, on enveloppe la prop dans Inertia::live() avec l'événement qui doit la rafraîchir. Inertia lit les canaux dans la méthode broadcastOn() de cet événement :

PHP
return Inertia::render('Team/Dashboard', [
    'stats' => Inertia::live(fn () => $team->stats(), on: new StatsUpdated($team)),
]);

Côté client, on passe un transport à createInertiaApp(). Le helper echo() s'appuie sur l'instance Echo que prépare configureEcho() :

JavaScript
import { createInertiaApp } from '@inertiajs/vue3'
import { echo } from '@inertiajs/vue3/echo'
import { configureEcho } from '@laravel/echo-vue'

configureEcho({ broadcaster: 'reverb' })

createInertiaApp({ live: echo() })

À la réception de l'événement, Inertia fait un rechargement partiel de cette seule prop ; plusieurs props qui écoutent le même événement sur le même canal sont rechargées dans une seule requête. on accepte un tableau d'événements, channel remplace les canaux, et les canaux publics, privés, de présence et privés chiffrés fonctionnent. Les paquets @laravel/echo-vue, echo-react et echo-svelte sont des dépendances homologues optionnelles.

Les garde-fous

Autour

Comment s'y prendre

Commencer par une seule prop de tableau de bord en live sur Reverb, garder la limite d'une seconde, comparer le nombre de requêtes, et ne passer à broadcastProps() que si le rechargement coûte vraiment cher.

Source : Laravel News, qui reprend les notes de version Inertia.js v3.11.0 et inertia-laravel v3.7.0. Source en anglais.