¿Qué son los WebSockets?
WebSocket es una tecnología web que ofrece canales de comunicación bidireccional y full-duplex sobre un único socket TCP, estandarizada por el IETF como RFC 6455.
WebSocket es una tecnología web que ofrece canales de comunicación bidireccional y full-duplex sobre un único socket TCP, estandarizada por el IETF como RFC 6455.
WebSocket permite una comunicación persistente y bidireccional entre navegadores y servidores sin necesidad de polling constante.
El HTTP tradicional sigue un patrón de petición-respuesta en el que el cliente debe iniciar cada intercambio. WebSocket actualiza una conexión HTTP a un canal persistente y full-duplex en el que tanto cliente como servidor pueden enviar datos en cualquier momento. Esto elimina la sobrecarga de los repetidos handshakes HTTP y permite interacciones en tiempo real reales, como feeds en directo, juegos en línea, edición colaborativa y tickers financieros.
Una conexión WebSocket empieza como una petición HTTP de upgrade y luego pasa a un protocolo persistente de tramas binarias.
El cliente envía una petición HTTP GET con las cabeceras Upgrade: websocket y Connection: Upgrade, junto con un Sec-WebSocket-Key aleatorio.
El servidor responde con HTTP 101 Switching Protocols, confirmando el upgrade. La conexión TCP es ahora un canal WebSocket.
Ambos lados envían libremente tramas de texto o binarias con una sobrecarga mínima de 2 bytes. La conexión permanece abierta hasta que cualquiera de los lados la cierre.
Conéctate a un servidor WebSocket e intercambia mensajes en unas pocas líneas de código.
uses
sgcWebSocket_Client, sgcWebSocket_Types;
var
WSClient: TsgcWebSocketClient;
procedure TForm1.FormCreate(Sender: TObject);
begin
WSClient := TsgcWebSocketClient.Create(nil);
WSClient.Host := 'echo.websocket.org';
WSClient.Port := 443;
WSClient.TLS := True;
WSClient.OnMessage := OnMessage;
WSClient.Active := True;
end;
procedure TForm1.OnMessage(Connection: TsgcWSConnection;
const aText: string);
begin
// Gestiona los mensajes entrantes
Memo1.Lines.Add('Received: ' + aText);
end;
procedure TForm1.ButtonSendClick(Sender: TObject);
begin
// Envía un mensaje de texto al servidor
WSClient.WriteData('Hello, WebSocket!');
end;