WebSocket nedir?

WebSocket, IETF tarafından RFC 6455 olarak standartlaştırılmış, tek bir TCP soketi üzerinden çift yönlü, tam çift yönlü iletişim kanalları sağlayan bir web teknolojisidir.

Gerçek Zamanlı İletişim

WebSocket, tarayıcılar ve sunucular arasında sürekli yoklama olmadan kalıcı, çift yönlü iletişim sağlar.

HTTP İstek-Yanıtın Ötesinde

Geleneksel HTTP, istemcinin her alışverişi başlatması gereken bir istek-yanıt deseni izler. WebSocket, bir HTTP bağlantısını hem istemcinin hem de sunucunun istedikleri zaman veri gönderebildiği kalıcı, tam çift yönlü bir kanala yükseltir. Bu, tekrarlanan HTTP el sıkışmalarının ek yükünü ortadan kaldırır ve canlı akışlar, çevrimiçi oyunlar, işbirlikçi düzenleme ve finansal şeritler gibi gerçek zamanlı etkileşimleri mümkün kılar.

  • Çift yönlü: hem istemci hem de sunucu veri gönderebilir
  • Kalıcı bağlantı gecikmeyi ve ek yükü azaltır
  • Standart TCP portu 80/443 üzerinden çalışır, güvenlik duvarlarını aşar
  • IETF tarafından RFC 6455 olarak standartlaştırılmıştır
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

WebSocket El Sıkışması

Bir WebSocket bağlantısı, bir HTTP yükseltme isteği olarak başlar ve ardından kalıcı bir ikili çerçeve protokolüne geçer.

1. HTTP Yükseltme İsteği

İstemci, rastgele bir Sec-WebSocket-Key ile birlikte Upgrade: websocket ve Connection: Upgrade başlıklarını içeren bir HTTP GET isteği gönderir.

2. Sunucu Kabul Eder

Sunucu, yükseltmeyi onaylayarak HTTP 101 Switching Protocols ile yanıt verir. TCP bağlantısı artık bir WebSocket kanalıdır.

3. Tam Çift Yönlü Mesajlaşma

Her iki taraf da minimum 2 baytlık ek yükle serbestçe metin veya ikili çerçeveler gönderir. Bağlantı, taraflardan biri kapatana kadar açık kalır.

Delphi WebSocket Örneği

Bir WebSocket sunucusuna bağlanın ve birkaç satır kodla mesaj alışverişi yapın.

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'www.esegece.com';
  WSClient.Port := 2053;
  WSClient.TLS := True;
  WSClient.OnMessage := OnMessage;
  WSClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const aText: string);
begin
  // Gelen mesajları işle
  Memo1.Lines.Add('Alındı: ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Sunucuya bir metin mesajı gönder
  WSClient.WriteData('Hello, WebSocket!');
end;

Gerçek Zamanlı Uygulamalar Oluşturmaya Hazır mısınız?

sgcWebSockets'i indirin ve bugün Delphi, C++ Builder veya .NET projelerinize WebSocket desteği ekleyin.