Cliente Websocket

Tradução automática de Deepl

No mundo interligado de hoje, a necessidade de actualizações em tempo real é fundamental para sítios Web e aplicações IoT.

Uma maneira de entregar informação instantaneamente para seus sites ou aplicações é usar o protocolo Websocket que fornece um canal de comunicação full-duplex entre um servidor e um cliente. A partir de 4D V20, é possível criar um servidor Websocket com a classe 4D.WebSocketServer. Continuamos na v20 R2 com a classe 4D.WebSocket que permite criar um cliente websocket para se conectar a qualquer servidor websocket.

Websocket HDI

Nesta postagem do blogue, vamos nos conectar ao servidor de bate-papo dado como exemplo no blogue do servidor de websocket:

Neste exemplo, as mensagens serão exibidas em uma caixa de listagem preenchida pela coleção Form.messages.

gerir eventos de websocket

Em primeiro lugar, é necessário criar uma classe para gerir os eventos de websocket e instanciá-la. Para isso, é necessário criar uma classe com algumas das seguintes funções, dependendo das suas necessidades:

  • onMessage(), chamada cada vez que uma mensagem chega através desta conexão,
  • onOpen(), chamada quando a conexão websocket é aberta,
  • onTerminate(), chamada quando a ligação websocket é fechada,
  • onError(), chamada quando ocorre um erro.

No nosso exemplo, queremos mostrar a mensagem recebida do servidor e mostrar o fecho da ligação. Por isso, criamos esta 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 queremos enviar as mensagens escritas pelo utilizador para o servidor:

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

ligar ao servidor

Para conectar sua aplicação ao servidor websocket, é necessário instanciar a classe 4D.WebSocket usando a url do servidor como primeiro parâmetro e seu manipulador de conexão WebSocket no segundo:

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

Consulte esta funcionalidade com o HDI e a documentação para obter mais pormenores!

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.