Junior — Middle
Pode explicar o que são os web sockets e como eles funcionam para estabelecer uma comunicação bidirecional entre o cliente e o servidor?
sobes.tech IA
Resposta da IA
Os sockets web são um protocolo que fornece comunicação bidirecional (full-duplex) entre o cliente e o servidor sobre uma única conexão TCP.
Como funciona:
- O cliente inicia uma solicitação HTTP com o cabeçalho
Upgrade: websocketpara mudar para o protocolo WebSocket. - O servidor confirma a transição respondendo com o cabeçalho adequado.
- Após o aperto de mão bem-sucedido, uma conexão persistente é estabelecida, na qual ambas as partes podem enviar dados a qualquer momento.
Isso difere do HTTP clássico, onde o cliente envia uma solicitação e o servidor responde, e a conexão é fechada. Os sockets web permitem que o servidor envie dados ao cliente sem uma solicitação, o que é útil para chats, jogos, tempo real, etc.
Exemplo em C# usando System.Net.WebSockets:
using System.Net.WebSockets;
using System.Threading;
using System.Text;
// Exemplo de envio e recebimento de mensagens via WebSocket
ClientWebSocket ws = new ClientWebSocket();
await ws.ConnectAsync(new Uri("wss://example.com/socket"), CancellationToken.None);
// Enviando mensagem
string message = "Hello";
byte[] bytes = Encoding.UTF8.GetBytes(message);
await ws.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);
// Recebendo mensagem
var buffer = new byte[1024];
var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
string received = Encoding.UTF8.GetString(buffer, 0, result.Count);