Funções conexão com WebSocket

WebSocket é uma tecnologia que torna possível abrir uma sessão de comunicação interativa entre o navegador do usuário e um servidor.

As novas funcionalidades da tecnologia WebSocket traz completa liberdade para o desenvolvedor estabelecer regras de negócio ao executar cada ação do WebSokcet Servidor e Cliente. O WebSocket é utilizado sempre que for necessária uma conexão de baixa latência(quase em tempo real) entre cliente e servidor, gerando uma grande possibilidade de aplicações a serem criadas, dentre elas:

Abaixo segue um exemplo da utilização desta funcionalidade.

Funções que serão utilizadas:

Estrutura dos fluxos:

Fluxo WebSocket Chat - Botão alocar Endpoint.

  1. Utilizamos a função WebSocket - Obter Endpoint para que um Endpoint seja alocado, armazenando o caminho deste Endpoint em uma variável. Não passamos nenhum parâmetro pois não temos regras a serem executadas na camada servidor.


  2. Utilizamos a função É Nulo ou Vazio para verificar se o valor retornado é vazio:

    • Se sim, todos os endpoints estão alocados no momento e não foi possível alocar um endpoint novo
    • Se não, o endpoint foi alocado corretamente.

  3. Declaramos este caminho como uma variável de sessão com a função Definir variável de sessão, para que possa ser regatada por outros fluxos.


  4. Utilizamos a função Alterar Valor do Componente para alterar o valor do componente referente à caixa do nome no Endpoint.


  5. Utilizamos a função Alterar Valor do Componente para alterar o valor do componente referente à caixa de mensagens, mostrando um aviso.


Fluxo WebSocket Chat - Botão conectar ao Endpoint.

As funções já utilizadas em fluxos anteriores não serão referenciadas novamente, apenas citadas.

  1. Utilizamos a função Obter valor do componente para obter o nome do usuário e o caminho do Endpoint a qual irá ser conectado.


  2. Verificamos se o campo Nome está preenchido com a função É Nulo ou Vazio. Se não: mensagem de erro é impressa no campo de mensagens.

  3. Chamada do fluxo servidor WebSocket Chat - Checar se o servidor está em uso é feita para checar se o servidor existe e/ou está alocado, pois caso contrário não pode-se conectar a ele.


    WebSocket Chat - Checar se o servidor está em uso

    1. Passamos como parâmetro de entrada do fluxo o caminho do endpoint


    2. Utilizamos a função WebSocket - Servidor em uso? para retornar uma variável lógica, identificando se o servidor está em uso, para ser retornado ao fluxo acima a este.


    3. O fluxo retornará a variável do tipo lógico retornada pela função WebSocket - Servidor em uso?.


  4. Enfim, utilizamos a função WebSocket - Conectar ao Servidor, passando o caminho do endpoint, fluxo "Ao entrar", "Ao receber mensagem", "Ao sair" e "Ao ocorrer erro" (estes fluxos estão referenciados na sessão abaixo à "Estrutura dos fluxos"), para estabelecer a conexão e armazenamos a instância na variável de formulário para que funções do cliente possam ser utilizadas.


Fluxo WebSocket Chat - Botão desconectar.

As funções já utilizadas em fluxos anteriores não serão referenciadas novamente, apenas citadas.

  1. Utilizamos a função Obter Variável de formulário para resgatar a instância da conexão do cliente, possibilitando fechar a conexão.


  2. Em seguida, obtemos o nome do usuário para enviar mensagem aos outros clientes avisando a desconexão utilizando a função WebSocket - Enviar mensagem cliente servidor. Cada cliente receberá a mensagem e acionará automaticamente o seu fluxo "Ao receber mensagem".


  3. Enfim, fechamos a conexão do cliente com a função WebSocket - Fechar conexão..


Fluxo WebSocket Chat - Botão liberar Endpoint.

As funções já utilizadas em fluxos anteriores não serão referenciadas novamente, apenas citadas.

  1. Obtemos o nome do endpoint que será liberado, chamamos o fluxo WebSocket Chat - Liberar endpoint e alteramos o valor da caixa de mensagem com uma mensagem avisando que o endpoint foi liberado.

  2. Chamada do Subfluxo WebSocket Chat - Liberar Endpoint.


    1. O caminho do endpoint é passado como parâmetro de entrada do fluxo.


    2. Utilizamos a função WebSocket - Liberar Endpoint para que o Endpoint seja liberado e possa ser alocado novamente.


Fluxo WebSocket Chat - Botão enviar mensagem.

As funções já utilizadas em fluxos anteriores não serão referenciadas novamente, apenas citadas.

  1. Obtemos o nome do usuário que está enviando a mensagem e o conteúdo da mensagem a ser enviada para o servidor com a função Obter valor do componenete.

  2. Utilizamos a função Obter Variável do Formulário para resgatar a referência da conexão do cliente.

  3. Com a referência da conexão, podemos enviar a mensagem através da função WebSocket - Enviar mensagem cliente servidor..

  4. Enfim, limpamos a caixa de texto onde a mensagem foi inserida com a função Alterar valor do componenete.

Fluxos passados na função WebSocket - Conectar ao Servidor.

Fluxo WebSocket Chat - Fluxo Cliente ao entrar.

As funções já utilizadas em fluxos anteriores não serão referenciadas novamente, apenas citadas.

  1. Automaticamente, todo fluxo "Ao entrar" recebe um parãmetro de entrada para a referência da conexão.


  2. Com a referência da conexão, utilizamos a função WebSocket - Checar status da conexão e a função Igual para verificar se a conexão foi estabelecida.


    Observação sobre o retorno da função:

    1. Conectando

    2. Conectado

    3. Fechando

    4. Fechado

  3. Caso a conexão não seja estabelecida, o campo mensagens mostrará a mensagem de erro utilizando a função Alterar Valor do Componente.

  4. Caso a conexão tenha sido estabelecida com sucesso, seguimos com o fluxo montando a mensagem que será enviada para todos os clientes com a função Concatenação.


  5. Em seguida, enviamos a mensagem para todos os clientes com a função WebSocket - Enviar mensagem cliente servidor, alertando de que o usuário entrou no Chat.

  6. Para finalizar, componentes do formulário são habilitados e desabilitados com a função Habilitar Componente de acordo com as regras de negócio propostas.


Fluxo WebSocket Chat - Fluxo Cliente ao desconectar.

  • Este fluxo apenas utiliza funções já explicadas anteriormente, habilitando e desabilitando componentes com a função Habilitar Componente e limpando os campos com a função Alterar Valor do Componente.

Fluxo WebSocket Chat - Fluxo Cliente ao receber mensagem e Fluxo WebSocket Chat - Fluxo de Erro Cliente.

  • Ambos fluxos possuem apenas esta função Alterar Valor do Componente, alterando o conteúdo do campo de mensagens.

Para ver o projeto em andamento, assista a demonstração no vídeo abaixo:

Clique aqui para baixar Exemplo WebSocket

____________________________________________________________________________

image776.jpg

Caso este tópico não tenha comentário satisfatório, envie e-mail para documentacao@softwell.com.br