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.
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.
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.
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.
Basit ama güçlü sunucudan istemciye push bildirimleri.
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.
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.
Her olay bir kimlik taşıyabilir. Yeniden bağlanmadan sonra istemci son olay kimliğini gönderir; böylece sunucu kaldığı yerden devam edebilir.
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.
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 bağlantılarının engellendiği veya kısıtlandığı ortamlarda SSE'yi hafif bir yedek olarak kullanın.
Tek yönlü sunucu push'unun ihtiyacınız olan tek şey olduğu senaryolar.
Gerçek zamanlı push teslimatıyla uygulamalara canlı haberleri, sosyal medya güncellemelerini ve içerik akışlarını akıtın.
Minimum gecikmeyle istemci uygulamalarına gerçek zamanlı hisse fiyatları, piyasa verileri ve işlem uyarıları iletin.
Yoklama veya manuel yenileme olmadan kullanıcılara gerçek zamanlı bildirimler, uyarılar ve sistem mesajları iletin.
İ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.
CI/CD pipeline durumunu, yapı ilerlemesini ve dağıtım bildirimlerini gerçek zamanlı olarak geliştirici panolarına iletin.
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;