Middle+
HTML5da server-sent voqealari nima uchun kiritildi?
sobes.tech AI
AIdan javob
Server va mijoz o'rtasida yagona yo'nalishli aloqa kanalini amalga oshirish uchun. Server ulanishni o'rnatgandan so'ng istalgan vaqtda mijozga ma'lumot yuborishi mumkin.
Asosiy xususiyatlar va afzalliklar:
- Samaradorlik: Oddiy HTTP ulanishi ishlatiladi, polling bilan solishtirganda ortiqcha yuklarni minimallashtiradi.
- Soddalik: Serverdan yuborilgan voqealar API'si (SSE) WebSocketlardan ko'ra soddaroq va yagona yo'nalishda aloqa uchun qulay.
- Avtomatik qayta ulanish: Brauzer aloqa uzilgan taqdirda avtomatik ravishda qayta ulanishga harakat qiladi.
- Ma'lumot turlarini qo'llab-quvvatlash:
text/event-streamformatida matnli ma'lumotlarni yuborish qo'llab-quvvatlanadi. - Brauzerlar bilan moslik: Zamonaviy brauzerlar tomonidan keng qo'llab-quvvatlanadi.
Qo'llanilishi:
- Yangiliklar lentalarini real vaqtda yangilash.
- Hodisalar haqida bildirishnomalar (masalan, yangi xabarlar).
- Ma'lumotlarni real vaqtda monitoring qilish (masalan, birjaviy kurslar).
- Uzun davom etadigan vazifalarning progressi.
Bu an'anaviy pollingga alternativ bo'lib, unda mijoz muntazam ravishda serverdan yangilanishlar bor-yog'ini so'raydi. WebSocketlardan farqli o'laroq, SSE yagona yo'nalishli bo'lib, u faqat serverdan mijozga ma'lumot uzatilganda foydalanishni soddalashtiradi.
Mijoz tomonidagi misol (JavaScript):
const eventSource = new EventSource('/events'); // Serverdan voqealarni olish uchun URL
eventSource.onmessage = function(event) {
// Olingan ma'lumotlarni qayta ishlash
console.log('Olingan xabar:', event.data);
};
eventSource.onerror = function(error) {
// Ulanishdagi xatolarni boshqarish
console.error('Serverdan yuborilgan voqealar xatosi:', error);
};
eventSource.addEventListener('customEvent', function(event) {
// 'customEvent' turidagi maxsus voqeani qayta ishlash
console.log('Maxsus voqea:', event.data);
});
Server tomonidagi ma'lumotlar formatining misoli:
event: customEvent
data: {"message": "Salom!"}
data: Oddiy matnli xabar
id: 123 // Voqea identifikatori, avtomatik qayta ulanish uchun ishlatiladi
retry: 5000 // Keyingi qayta ulanishdan oldin kutish vaqti millisekundlarda