Klient Websocket

Automaticky přeloženo z Deepl

V dnešním propojeném světě je pro webové stránky a aplikace internetu věcí nejdůležitější potřeba aktualizací v reálném čase.

Způsobem, jak okamžitě poskytovat informace webům nebo aplikacím, je použití protokolu Websocket, který poskytuje plně duplexní komunikační kanál mezi serverem a klientem. Ve verzi 4D V20 můžete vytvořit websocketový server pomocí třídy 4D.WebSocketServer. Ve verzi v20 R2 pokračujeme třídou 4D.WebSocket, která umožňuje vytvořit websocketového klienta pro připojení k libovolným websocketovým serverům.

HDI websocket

V tomto příspěvku se připojíme k chatovacímu serveru uvedenému jako příklad v blogu o websocketovém serveru:

V tomto příkladu se budou zprávy zobrazovat v seznamu vyplněném kolekcí Form.messages.

správa událostí webového socketu

Nejprve je třeba vytvořit třídu pro správu událostí websocketu a instancovat ji. K tomu je třeba vytvořit třídu s některou z následujících funkcí, v závislosti na vašich potřebách:

  • onMessage(), která se volá pokaždé, když přes toto spojení přijde zpráva,
  • onOpen(), která se volá při otevření spojení websocket,
  • onTerminate(), která se volá, když je spojení websocket uzavřeno,
  • onError(), volaná při výskytu chyby.

V našem příkladu chceme zobrazit zprávu přijatou ze serveru a zobrazit uzavření spojení. Vytvoříme tedy tuto třídu 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")
   

A chceme odesílat zprávy napsané uživatelem na server:

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

připojit k serveru

Pro připojení aplikace k websocketovému serveru je třeba instanciovat třídu 4D.WebSocket s použitím url adresy serveru jako prvního parametru a vaší obsluhy připojení k websocketovému serveru v druhém parametru:

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

Pro více informací si tuto funkci prohlédněte pomocí HDI a dokumentace!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se připojil k týmu 4D Program v listopadu 2016. Jako Product Owner má na starosti psaní uživatelských příběhů, které následně převádí do funkčních specifikací. Jeho úkolem je také zajistit, aby dodaná implementace funkcí splňovala potřeby zákazníků.Po získání bakalářského titulu v oboru informatiky na CNAM nastoupil Fabrice do malé softwarové vydavatelské společnosti jako vývojář Windev. Poté pracoval pro různé společnosti v oblasti průmyslu a obchodu jako vývojář aplikací Windev a webových aplikací a také jako technický poradce pro nové funkce.