Sobes.tech
Junior

Para que são utilizados os sockets no desenvolvimento web?

sobes.tech IA

Resposta da IA

Para a troca bidirecional de dados entre o cliente (navegador) e o servidor em tempo real. Ao contrário do HTTP tradicional, onde o cliente inicia a solicitação e o servidor responde, os sockets permitem que o servidor envie dados ao cliente a qualquer momento sem uma solicitação prévia.

Exemplos de uso:

  • Aplicações de chat: Entrega instantânea de mensagens entre utilizadores.
  • Jogos online: Sincronização do estado dos jogadores e do mundo do jogo em tempo real.
  • Plataformas de trading: Atualização de cotações de ações ou criptomoedas sem recarregar a página.
  • Notificações: Envio de notificações push aos utilizadores quando há alterações no estado de um pedido, nova mensagem, etc.
  • Edição colaborativa de documentos: Sincronização de alterações entre vários utilizadores.

Os sockets são implementados sobre o protocolo TCP e geralmente utilizam o protocolo WebSocket, que garante uma ligação constante entre o cliente e o servidor após o aperto de mão HTTP inicial.

// Exemplo de código do cliente para estabelecer uma ligação WebSocket
const ws = new WebSocket('ws://localhost:8080'); // Endereço do servidor WebSocket

ws.onopen = () => {
  // Ligação estabelecida
  console.log('Ligação WebSocket estabelecida');
  ws.send('Olá, servidor!'); // Enviar mensagem ao servidor
};

ws.onmessage = (event) => {
  // Mensagem recebida do servidor
  console.log('Mensagem recebida do servidor:', event.data);
};

ws.onclose = (event) => {
  // Ligação encerrada
  if (event.wasClean) {
    console.log(`Ligação encerrada limpidamente, código=${event.code} motivo=${event.reason}`);
  } else {
    console.error('Ligação interrompida');
  }
};

ws.onerror = (error) => {
  // Erro ao trabalhar com a ligação
  console.error('Erro WebSocket:', error);
};

A ligação WebSocket tem custos baixos de overhead em comparação com pedidos HTTP constantes (polling ou long polling), tornando-a mais eficiente para aplicações que requerem troca frequente de dados em tempo real.