Classes natives
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épendamment du serveur web et écoute son propre port (9000 par défaut dans DWF, paramétrable 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.
Côté 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 rêception de chaînes JSON.
dans les chaînes d'envoi vers le serveur une clé "action" est obligatoire afin d'indiquer au websocket quel traitement appliquer.
le reste des clés sont libres.
la seule action définie par défaut est l'action d'authentification qui prend en seconde clé un token d'authentification (qui peut être vide) :
Le retour est une des ces possibilités :
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 requêtes au serveur websocket depuis PHP