Websocket-Client

In der heutigen vernetzten Welt ist der Bedarf an Echtzeit-Updates für Websites und IoT-Anwendungen von größter Bedeutung.

Eine Möglichkeit, Informationen sofort an Ihre Websites oder Anwendungen zu liefern, ist die Verwendung des Websocket-Protokolls, das einen Vollduplex-Kommunikationskanal zwischen einem Server und einem Client bietet. Ab 4D v20 können Sie einen Websocket-Server mit der Klasse 4D.WebSocketServer erstellen. In v20 R2 gibt es die Klasse 4D.WebSocket, mit der Sie einen Websocket-Client erstellen können, der sich mit beliebigen Websocket-Servern verbindet.

HDI-Websocket

In diesem Blogbeitrag werden wir uns mit dem Chat-Server verbinden, der als Beispiel im Websocket-Server-Blog angegeben ist:

In diesem Beispiel werden die Nachrichten in einer Listbox angezeigt, die von der Sammlung Form.messages gefüllt wird.

Websocket-Ereignisse verwalten

Zunächst müssen Sie eine Klasse zur Verwaltung der Websocket-Ereignisse erstellen und instanziieren. Zu diesem Zweck müssen Sie eine Klasse mit einigen der folgenden Funktionen erstellen, je nach Bedarf:

  • onMessage(), die jedes Mal aufgerufen wird, wenn eine Nachricht über diese Verbindung eingeht,
  • onOpen(), die aufgerufen wird, wenn die Websocket-Verbindung geöffnet wird,
  • onTerminate(), die aufgerufen wird, wenn die Websocket-Verbindung geschlossen wird,
  • onError(), die aufgerufen wird, wenn ein Fehler auftritt.

 

In unserem Beispiel wollen wir die vom Server empfangene Nachricht anzeigen und das Schließen der Verbindung anzeigen. Also erstellen wir diese WSConnectionHandler-Klasse:

Class constructor
	
Function onMessage($ws : Object; $event : Object)
   Form.messages.push($event.data)

Function onTerminate($ws : Object; $event : Object)
   Form.messages.push("Connection closed")
   

Und wir wollen die vom Benutzer geschriebenen Nachrichten an den Server senden:

// Sends a message through the websocket client connected to the websocket server
Form.webSocket.send(Form.message)

Verbindung zum Server herstellen

Um Ihre Anwendung mit dem Websocket-Server zu verbinden, müssen Sie 4D.WebSocket instanziieren und dabei die Server-URL als ersten Parameter und Ihren WebSocket-Verbindungshandler als zweiten Parameter angeben:

Form.webSocket:=4D.WebSocket.new($wssUrl; cs.WSConnectionHandler.new())

Sehen Sie sich diese Funktion mit dem HDI und die Dokumentation für weitere Details an!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.