WinDev + Supabase Realtime : des données aussi réactives qu’une app mobile

WinDev + Supabase Realtime des données aussi réactives qu’une app mobile

Introduction

Dans des applications métiers riches comme celles développées avec WinDev, l’actualisation instantanée des données critiques (commandes, stocks, statuts) devient un enjeu de réactivité pour l’utilisateur. Coupler Supabase Realtime avec une interface WinDev permet de répondre efficacement à ce besoin : chaque changement dans la base de données Postgres est immédiatement propagé vers l’interface, sans polling, avec une latence quasi nulle.

Cet article explore comment mettre en œuvre cette architecture, depuis la souscription aux événements Postgres jusqu’à l’intégration dans le code WinDev via WebSocketConnectSSL.


Présentation rapide de Supabase Realtime

Supabase Realtime est un composant de la plateforme Supabase permettant de recevoir des événements (INSERT, UPDATE, DELETE) émis par une base PostgreSQL, en utilisant les fonctionnalités de Logical Replication et PostgreSQL’s WAL (Write-Ahead Logging).

La mise en place d’une réplication logique vers le service Realtime de Supabase permet ainsi de capter tous les changements d’une table pour les transmettre à des clients abonnés via WebSocket.

Le format Phoenix

Supabase Realtime repose sur Phoenix Channels, un protocole de communication basé sur JSON utilisé dans l’écosystème Elixir. Chaque message WebSocket suit un format structuré :

{
  "topic": "realtime:public:commande",
  "event": "INSERT",
  "payload": {
    "new": {
      "id": 4521,
      "client": "IsiNeva",
      "montant": 1250
    },
    "old": null,
    "type": "INSERT"
  },
  "ref": null,
  "join_ref": "1"
}

Connexion WebSocket sécurisée avec WinDev

WinDev dispose de la fonction WebSocketConnectSSL, parfaitement adaptée pour établir une connexion sécurisée avec Supabase.

Exemple de connexion WebSocket

sURL est une chaîne = "wss://xyz.supabase.co/realtime/v1/websocket?apikey=xxxx"
SI WebSocketConnectSSL("SupabaseSocket", sURL) ALORS
   Trace("Connexion réussie")
SINON
   Erreur("Échec de connexion : " + ErreurInfo())
FIN

L’authentification repose sur un token d’API (clé de projet ou JWT selon configuration), qui est transmis en paramètre de requête.


Gestion des messages en WinDev

Une fois connecté, vous devez :

  1. Rejoindre un canal Phoenix (avec join)
  2. Souscrire à une table spécifique (ex: public.commande)
  3. Traiter les événements INSERT, UPDATE, DELETE

Envoi d’un message « join » sur le canal

sJoinMsg est une chaîne = [
{
  "topic": "realtime:public:commande",
  "event": "phx_join",
  "payload": {},
  "ref": "1"
}
]
WebSocketEnvoie("SupabaseSocket", sJoinMsg)

Réception et parsing des messages

PROCÉDURE WS_SupabaseSocket_MessageReçue(sMessage est une chaîne)
JSON est un Variant = JSONVersVariant(sMessage)
SELON JSON.event
   CAS "INSERT":
      id est un entier = JSON.payload.new.id
      client est une chaîne = JSON.payload.new.client
      Trace("Nouvelle commande : " + client + " (" + id + ")")
FIN

Avantages pour l’entreprise

Adopter Supabase Realtime dans une architecture WinDev apporte plusieurs bénéfices tangibles :

  • Réduction du polling : plus besoin d’interroger la base à intervalle fixe.
  • Réactivité UI : les utilisateurs voient les changements immédiatement.
  • Simplicité de déploiement : pas de serveur de notifications à maintenir.
  • Évolutivité : plusieurs clients WinDev peuvent se connecter à la même instance Supabase.

Cas concret : mise à jour d’un tableau de bord.

Dans l’application développée pour IsiNeva, chaque commande ajoutée, modifiée ou supprimée est instantanément répercutée dans l’interface WinDev sans action de l’utilisateur. La mise à jour du tableau de bord et de la liste des commandes est aussi déclenché dans le callback WS_SupabaseSocket_MessageReçue suffit pour garantir une interface temps réel cohérente.


Conclusion

L’intégration de Supabase Realtime avec WinDev via WebSocketConnectSSL est une solution moderne, efficace et rapide à mettre en œuvre pour dynamiser les interfaces métiers. Elle transforme une application classique en système interactif, synchrone avec les données serveur.

Chez IsiNeva, cette approche permet de livrer des outils ultra-réactifs, adaptés aux exigences des métiers terrain ou back-office, sans alourdir la charge serveur ou complexifier l’infrastructure.


Liens externes