Middle+
HTML5-də server-sent hadisələri niyə daxil edildi?
sobes.tech Süni İntellekt
AI-dan cavab
Server və müştəri arasında tək istiqamətli əlaqə kanalı qurmaq üçün. Server əlaqə qurulduqdan sonra istənilən vaxt müştəriyə məlumat göndərə bilər.
Əsas xüsusiyyətlər və üstünlüklər:
- Effektivlik: Adi HTTP əlaqəsi istifadə olunur, polling ilə müqayisədə əlavə xərcləri azaldır.
- Sadəlik: Server tərəfindən göndərilən hadisələr API-si (SSE) WebSocket-lərdən daha sadədir və tək istiqamətli əlaqə üçün uyğundur.
- Avtomatik yenidən qoşulma: Brauzer əlaqə kəsildikdə avtomatik yenidən qoşulmağa çalışır.
- Məlumat tiplərinin dəstəyi:
text/event-streamformatında mətn məlumatlarının göndərilməsi dəstəklənir. - Brauzer dəstəyi: Müasir brauzerlər tərəfindən geniş dəstəklənir.
Tətbiqlər:
- Xəbər lentlərinin real vaxtda yenilənməsi.
- Hadisələr haqqında bildirişlər (məsələn, yeni mesajlar).
- Məlumatların real vaxtda monitorinqi (məsələn, birja qiymətləri).
- Uzunmüddətli tapşırıqların irəliləyişi.
Bu, ənənəvi polling-ə alternativdir, burada müştəri mütəmadi olaraq serverdən yeniləmələrin olub-olmadığını soruşur. WebSocket-lərdən fərqli olaraq, SSE tək istiqamətlidir və məlumatlar yalnız serverdən müştəriyə ötürülürsə, istifadəsini sadələşdirir.
Müştəri tərəfində nümunə (JavaScript):
const eventSource = new EventSource('/events'); // Serverdən hadisələri almaq üçün URL
eventSource.onmessage = function(event) {
// Alınan məlumatların işlənməsi
console.log('Alınan mesaj:', event.data);
};
eventSource.onerror = function(error) {
// Əlaqə xətalarının idarə olunması
console.error('Server-Sent Events Xətası:', error);
};
eventSource.addEventListener('customEvent', function(event) {
// 'customEvent' tipli xüsusi hadisənin işlənməsi
console.log('Xüsusi hadisə alındı:', event.data);
});
Server tərəfində məlumat formatına nümunə:
event: customEvent
data: {"message": "Salam!"}
data: Sadə mətn mesajı
id: 123 // Hadisə identifikatoru, avtomatik yenidən qoşulma üçün istifadə olunur
retry: 5000 // Növbəti yenidən qoşulma üçün gecikmə (millisaniyə)