Sobes.tech
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-stream formatida 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