Dans le monde interconnecté d’aujourd’hui, le besoin de mises à jour en temps réel est primordial pour les sites web et les applications IoT.
Un moyen de fournir des informations instantanément à vos sites ou applications est d’utiliser le protocole Websocket qui fournit un canal de communication full-duplex entre un serveur et un client. Depuis 4D V20, vous pouvez créer un serveur Websocket avec la classe 4D.WebSocketServer. Nous continuons dans la v20 R2 avec la classe 4D.WebSocket qui vous permet de créer un client websocket pour se connecter à n’importe quel serveur websocket.
Dans ce billet de blog, nous nous connecterons au serveur de chat donné en exemple dans le blog sur les serveurs websocket:
Dans cet exemple, les messages seront affichés dans une listbox remplie par la collection Form.messages.
gérer les événements websocket
Tout d’abord, vous devez créer une classe pour gérer les événements websocket et l’instancier. Pour ce faire, vous devez créer une classe dotée de certaines des fonctions suivantes, en fonction de vos besoins :
- onMessage(), appelée à chaque fois qu’un message arrive par cette connexion,
- onOpen(), appelée lorsque la connexion websocket est ouverte,
- onTerminate(), appelée lorsque la connexion websocket est fermée,
- onError(), appelée lorsqu’une erreur s’est produite.
Dans notre exemple, nous voulons afficher le message reçu du serveur et afficher la fermeture de la connexion. Nous créons donc cette classe WSConnectionHandler:
Class constructor
Function onMessage($ws : Object; $event : Object)
Form.messages.push($event.data)
Function onTerminate($ws : Object; $event : Object)
Form.messages.push("Connection closed")
Et nous voulons envoyer les messages écrits par l’utilisateur au serveur :
// Sends a message through the websocket client connected to the websocket server
Form.webSocket.send(Form.message)
se connecter au serveur
Pour connecter votre application au serveur websocket, vous devez instancier la classe 4D.WebSocket en utilisant l’url du serveur comme premier paramètre et votre gestionnaire de connexion WebSocket dans le second :
Form.webSocket:=4D.WebSocket.new($wssUrl; cs.WSConnectionHandler.new())
Consultez cette fonctionnalité avec le HDI et la documentation pour plus de détails !