Client Websocket

Traduit automatiquement de Deepl

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.

HDI 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 !

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.