Sobes.tech
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:

  1. O cliente inicia uma solicitação HTTP com o cabeçalho Upgrade: websocket para mudar para o protocolo WebSocket.
  2. O servidor confirma a transição respondendo com o cabeçalho adequado.
  3. 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);