Cliente Websocket

Traducido automáticamente de Deepl

En el mundo interconectado de hoy en día, la necesidad de actualizaciones en tiempo real es primordial para los sitios web y las aplicaciones IoT.

Una forma de entregar información instantáneamente a sus sitios o aplicaciones es utilizar el protocolo Websocket que proporciona un canal de comunicación full-duplex entre un servidor y un cliente. Desde 4D V20, puede crear un servidor webs ocket con la clase 4D.WebSocketServer. Continuamos en v20 R2 con la clase 4D. WebSocket que le permite crear un cliente websocket para conectarse a cualquier servidor websocket.

HDI websocket

En esta entrada de blog, nos conectaremos al servidor de chat dado como ejemplo en el blog del servidor websocket:

En este ejemplo, los mensajes se mostrarán en un listbox poblado por la colección Form.messages.

gestionar eventos websocket

En primer lugar, necesitas crear una clase para gestionar los eventos del websocket e instanciarla. Para ello, necesitas crear una clase con algunas de las siguientes funciones, dependiendo de tus necesidades:

  • onMessage(), llamada cada vez que llega un mensaje a través de esta conexión,
  • onOpen(), llamada cuando se abre la conexión websocket,
  • onTerminate(), llamada cuando se cierra la conexión websocket,
  • onError(), llamada cuando se produce un error.

En nuestro ejemplo, queremos mostrar el mensaje recibido del servidor y mostrar el cierre de la conexión. Así que creamos esta clase 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")
   

Y queremos enviar los mensajes escritos por el usuario al servidor:

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

conectar con el servidor

Para conectar tu aplicación al servidor websocket, necesitas instanciar la clase 4D.WebSocket usando la url del servidor como primer parámetro y tu manejador de conexión WebSocket en el segundo:

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

Consulta esta función con el IDH y la documentación para obtener más detalles.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.