Server-Sent Events (SSE)

HTTP tabanlı sunucudan istemciye push bildirimleri. HTTP'nin çalıştığı her yerde çalışan, gerçek zamanlı veri akışına hafif ve güvenilir bir yaklaşım.

Server-Sent Events nedir?

SSE, sunucuların kalıcı bir HTTP bağlantısı üzerinden istemcilere veri iletmesi için basit, standartlaştırılmış bir yol sağlar.

Basit Sunucudan İstemciye Akış

Server-Sent Events, olayları sunucudan istemciye akıtmak için basit bir HTTP bağlantısı kullanır. WebSocket'in aksine SSE tek yönlüdür — sunucu veri gönderir, istemci alır. Bu basitlik onun gücüdür: SSE, herhangi bir özel yapılandırma olmadan HTTP proxy'leri, yük dengeleyiciler ve güvenlik duvarları aracılığıyla çalışır. Tarayıcı (veya istemci kütüphanesi) yeniden bağlanmayı otomatik olarak yönetir ve olay kimlikleri bir bağlantı kesilmesinden sonra kesintisiz devam etmeyi sağlar. sgcWebSockets, Delphi uygulamalarıyla doğal olarak entegre olan eksiksiz bir SSE istemcisi sağlar.

  • Standart HTTP kullanır — özel sunucu yapılandırması yok
  • Yapılandırılabilir yeniden deneme aralıklarıyla otomatik yeniden bağlanma
  • Kaldığınız yerden devam etmek için olay kimlikleri
  • Proxy'ler, güvenlik duvarları ve CDN'ler aracılığıyla çalışır
SERVER CLIENT text/event-stream data: {"event": "..."}

SSE Özellikleri

Basit ama güçlü sunucudan istemciye push bildirimleri.

Tek Yönlü Akış

Yalnızca sunucudan istemciye — mümkün olan en basit gerçek zamanlı mimari. Yalnızca istemcilere veri iletmeniz gerektiğinde SSE ideal seçimdir.

Otomatik Yeniden Bağlanma

Yapılandırılabilir yeniden deneme aralıklarıyla yerleşik yeniden bağlanma mantığı. İstemci, bağlantı kesildiğinde otomatik olarak yeniden bağlanır.

Devam İçin Olay Kimlikleri

Her olay bir kimlik taşıyabilir. Yeniden bağlanmadan sonra istemci son olay kimliğini gönderir; böylece sunucu kaldığı yerden devam edebilir.

text/event-stream

Standart MIME türü ve basit metin biçimi. Olaylar, isteğe bağlı adlandırılmış olay türleri içeren düz metindir; bu da onları oluşturmayı ve ayrıştırmayı kolaylaştırır.

Proxy ve Güvenlik Duvarı Dostu

Standart HTTP kullanır; bu nedenle SSE, özel yapılandırma veya port açma olmadan kurumsal proxy'ler, güvenlik duvarları ve CDN'ler aracılığıyla çalışır.

WebSocket Yedeği

WebSocket bağlantılarının engellendiği veya kısıtlandığı ortamlarda SSE'yi hafif bir yedek olarak kullanın.

SSE Kullanım Senaryoları

Tek yönlü sunucu push'unun ihtiyacınız olan tek şey olduğu senaryolar.

Canlı Akışlar

Gerçek zamanlı push teslimatıyla uygulamalara canlı haberleri, sosyal medya güncellemelerini ve içerik akışlarını akıtın.

Borsa Şeritleri

Minimum gecikmeyle istemci uygulamalarına gerçek zamanlı hisse fiyatları, piyasa verileri ve işlem uyarıları iletin.

Bildirim Sistemleri

Yoklama veya manuel yenileme olmadan kullanıcılara gerçek zamanlı bildirimler, uyarılar ve sistem mesajları iletin.

Günlük Akışı

İzleme ve sorun giderme için uygulama günlüklerini, sunucu olaylarını ve hata ayıklama çıktısını gerçek zamanlı olarak akıtın.

Yapı Durumu Güncellemeleri

CI/CD pipeline durumunu, yapı ilerlemesini ve dağıtım bildirimlerini gerçek zamanlı olarak geliştirici panolarına iletin.

Delphi SSE Örneği

Bir SSE uç noktasına bağlanın ve sunucudan gönderilen olayları alın.

uses
  sgcSSE_Client, sgcSSE_Classes;

var
  SSEClient: TsgcSSEClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SSEClient := TsgcSSEClient.Create(nil);
  SSEClient.URL := 'https://api.example.com/events';

  // Yeniden bağlanmayı yapılandır
  SSEClient.Options.RetryInterval := 3000;
  SSEClient.Options.AutoReconnect := True;

  // Olay işleyicilerini ayarla
  SSEClient.OnSSEConnect := OnSSEConnect;
  SSEClient.OnSSEEvent := OnSSEEvent;
  SSEClient.OnSSEDisconnect := OnSSEDisconnect;
end;

procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
  SSEClient.Connect;
end;

procedure TForm1.OnSSEConnect(Sender: TObject);
begin
  Memo1.Lines.Add('SSE akışına bağlanıldı');
end;

procedure TForm1.OnSSEEvent(Sender: TObject;
  aEventName, aData, aLastEventId: string);
begin
  // Gelen server-sent olaylarını işle
  if aEventName = 'price-update' then
    UpdatePrice(aData)
  else if aEventName = 'notification' then
    ShowNotification(aData)
  else
    Memo1.Lines.Add(aEventName + ': ' + aData);
end;

procedure TForm1.OnSSEDisconnect(Sender: TObject);
begin
  // Otomatik yeniden bağlanma, yeniden bağlanmayı yönetecek
  Memo1.Lines.Add('Bağlantı kesildi. Yeniden bağlanılıyor...');
end;

SSE ile Başlamaya Hazır mısınız?

Ücretsiz denemeyi indirin ve dakikalar içinde sunucudan gönderilen olayları almaya başlayın.