WebSocket
Les WebSocket permettent de faire de la communication en temps réel (Real Time Connexion, RTC).
L'utilisation première des WebSocket est pour les tchats entre utilisateurs mais ils peuvent aussi être utilisé pour notifier un utilisateur
ou afficher une donnée très variable dans le temps en temps réel (exemple : un stock dans une application de gestion)
Un serveur de WebSocket tourne indépendament du serveur web et écoute son propre port (9000 par défaut dans DWF, parametrable dans la config du projet).
il est possible de lancer le serveur en mode console (CLI), notamment pour débugger :
En production, il est possible de laisser l'application lancer elle même le serveur de websocket en utilisant la classe services pour lancer une requête qui lancera le serveur :
L'application ne lancera le serveur qu'une seule fois.
Coté client, la connexion peut être géré avec l'objet JS natif WebSocket
ATTENTION ! Actuellement DWF ne gère pas le tunnel de chiffreement (SSL/TLS),
c'est à vous de le mettre en place via le système de proxy de votre serveur web.
Les websockets de DWF fonctionnent avec l'envoi et la reception de chaines JSON.
dans les chaines d'envoi vers le serveur une clé "action" est obligatoire afin d'indiquer au websocket quel traitement appliquer.
le reste des clés sont libre.
la seule action définie par défaut et l'action d'authentification qui prend en seconde clé un token d'authentification (qui peut être vide) :
Le retour est une des ses possibilité :
Pour rajouter une action, il suffit de rajouter une classe dans le dossier "websocket" du projet qui sera nommé :
[nomDeLAction].ws.php
et qui doit avoir la forme suivante :
La classe websocket_client permet de gérer les utilisateurs connectés,
elle possède aussi des méthodes statiques qui permettent de sélectionner d'autres utilisateurs connectés.
Gardez en tête qu'un utilisateur peut avoir des connexions multiples (s'il ouvre plusieurs onglets par exemple).
La classe websocket_request permet de lancer des requetes au serveur websocket depuis PHP