Sobes.tech
Middle

HTML5-də server-sent hadisələri niyə daxil edildi?

sobes.tech Süni İntellekt

AI-dan cavab

Server tərəfindən göndərilən hadisələr (SSE) HTML5-ə daxil edilmişdir və serverdən müştəriyə məlumatların tək istiqamətdə, real vaxtda, HTTP əlaqəsi vasitəsilə ötürülməsi üçün nəzərdə tutulmuşdur. Bu, müştərinin davamlı olaraq sorğu göndərməsinə ehtiyac olmadan (polling) serverdən yeniləmələri almağa imkan verir. Digər texnologiyalarla müqayisədə əsas üstünlükləri:

  • Sadəlik: Adi HTTP əlaqəsini istifadə edir, bu da mövcud veb texnologiyaları və infrastruktur ilə inteqrasiyanı asanlaşdırır.
  • Effektivlik: Server hazır olduqda məlumatları göndərməyə imkan verir, bu da şəbəkə və server üzərində yükü azaldır, tez-tez polling ilə müqayisədə.
  • Avtomatik yenidən qoşulma: Brauzer əlaqə kəsildikdə avtomatik olaraq yenidən qurmağa çalışır.
  • Daxili işləmə: Brauzerdə EventSource API hadisələrlə və məlumatlarla işləmək üçün sadə interfeys təmin edir.

İstifadə nümunəsi müştəri tərəfində:

// SSE üçün server URL-i göstərərək yeni EventSource obyekti yaradın
const eventSource = new EventSource('/updates');

// 'message' hadisəsini işləyin - serverdən məlumatların alınması
eventSource.onmessage = function(event) {
  // Alınan məlumatları konsola çıxarın
  console.log('Yeni məlumatlar serverdən:', event.data);
};

// Bağlantı xətalarını işləyin
eventSource.onerror = function(error) {
  console.error('Xəta baş verdi:', error);
};

Serverdə cavab MIME tipi text/event-stream olmalı və aşağıdakı kimi formatlanmalıdır:

data: Bu ilk məlumat xəttidir\n
data: Bu ikinci məlumat xəttidir\n\n

Hər bir mesaj iki yeni sətir (\n\n) ilə bitir. Hər məlumat xətti data: ilə başlayır. Digər sahələr, məsələn, event: hadisənin növünü göstərmək və ya id: mesajın identifikatoru üçün ola bilər.

Server tərəfindən göndərilən hadisələr, serverin müştəriyə yeniləmələr axını göndərməli olduğu ssenarilər üçün yaxşı seçimdir, məsələn, bildirişlər, xəbər lentləri, səhmlərin qiymətləri və ya uzunmüddətli proseslərin nəticələri. Bunlar WebSocket-lərdən daha sadədir və tək yönlü əlaqə üçün daha asandır.