Client Websocket

Tradotto automaticamente da Deepl

Nel mondo interconnesso di oggi, la necessità di aggiornamenti in tempo reale è fondamentale per i siti web e le applicazioni IoT.

Un modo per fornire informazioni istantaneamente ai siti o alle applicazioni è utilizzare il protocollo Websocket, che fornisce un canale di comunicazione full-duplex tra un server e un client. Da 4D V20, è possibile creare un server websocket con la classe 4D.WebSocketServer. Nella versione v20 R2 è disponibile la classe 4D.WebSocket che consente di creare un client websocket per connettersi a qualsiasi server websocket.

Websocket HDI

In questo post, ci collegheremo al server di chat fornito come esempio nel blog sui server websocket:

In questo esempio, i messaggi verranno visualizzati in una casella di riepilogo popolata dalla collezione Form.messages.

gestire gli eventi websocket

Per prima cosa, è necessario creare una classe per gestire gli eventi websocket e istanziarla. Per farlo, occorre creare una classe con alcune delle seguenti funzioni, a seconda delle esigenze:

  • onMessage(), chiamata ogni volta che arriva un messaggio attraverso questa connessione,
  • onOpen(), chiamata quando la connessione websocket viene aperta,
  • onTerminate(), chiamata quando la connessione websocket viene chiusa,
  • onError(), chiamata quando si verifica un errore.

Nel nostro esempio, vogliamo visualizzare il messaggio ricevuto dal server e visualizzare la chiusura della connessione. Creiamo quindi questa 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")
   

E vogliamo inviare al server i messaggi scritti dall’utente:

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

connettersi al server

Per connettere la vostra applicazione al server websocket, dovete istanziare la classe 4D.WebSocket utilizzando l’url del server come primo parametro e il vostro gestore di connessione WebSocket come secondo:

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

Per maggiori dettagli, verificare questa funzione con l’HDI e la documentazione!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené si è unito al team di 4D Program nel novembre 2016. In qualità di Product Owner, è incaricato di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente.Dopo aver conseguito una laurea in Informatica presso il CNAM, Fabrice è entrato a far parte di una piccola società di pubblicazione di software come sviluppatore Windev. In seguito ha lavorato per diverse aziende del settore industriale e commerciale come sviluppatore Windev e web e come consulente tecnico su nuove funzionalità.