Notas Importantes

WebSockets é uma tecnologia legal e abre novas portas para maneiras de gerenciar sua interface web. Dito isso, há algumas coisas importantes que devem ser consideradas ao usá-la. Já mencionamos que WebSockets é usado para criar um sistema de mensagens no uniGUI. Esse sistema de mensagens pode ser usado para entregar mensagens instantaneamente a todos os clientes existentes e forçá-los a atualizar sua UI. Há aspectos que devem ser lembrados ao usar WebSockets e o sistema de mensagens relacionado.

Considerações sobre a Lógica de Negócio

Quando uma mensagem é transmitida pelo sistema, a mensagem é recebida por cada cliente e uma requisição Ajax será enviada por cada cliente ao servidor para solicitar uma atualização da UI. Você deve garantir que esse manipulador de eventos contenha apenas código que atualize elementos da UI. Esse manipulador de evento não deve incluir código que faça parte da sua lógica de negócio.

Por exemplo, se uma linha do banco de dados deve ser modificada como parte da sua lógica de negócio, isso não deve ser feito no manipulador de eventos de mensagem de um formulário (por exemplo, OnBroadcastMessage). Deve ser feito no manipulador de eventos iniciado pelo usuário. Código colocado no manipulador OnBroadcastMessage deve afetar somente elementos da UI. Todo o demais código que faça parte da sua lógica de negócio deve ser colocado apenas em manipuladores de eventos acionados pelo usuário. Em resumo, a funcionalidade da sua aplicação e a lógica de negócio relacionada não devem depender da funcionalidade de WebSockets.

circle-exclamation

Considerações sobre Atualização do Cliente

O princípio principal a seguir aqui é que suas atualizações devem ser sem estado. Cada nova atualização não deve depender da atualização anterior. Existem casos em que algumas atualizações podem ser perdidas em decorrência de falha de conexão ou instabilidade de rede. Essas atualizações perdidas não devem afetar novas atualizações.

Existem dois eventos que são disparados quando uma conexão WebSocket é estabelecida ou fechada: OnSocketOpen e OnSocketClose. Você pode usar o evento OnSocketOpen para detectar o restabelecimento da conexão. Quando a conexão é reaberta, esse evento é disparado e você pode atualizar completamente a UI.

Por exemplo, se você atualiza um memo adicionando uma nova linha cada vez que uma mensagem do socket é recebida, você deve atualizar completamente as linhas do memo quando o evento OnSocketOpen for disparado, para que mensagens perdidas não deixem a UI em um estado inconsistente.