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.