Sobes.tech
Middle

HTML5da server-sent voqealar nima uchun kiritildi?

sobes.tech AI

AIdan javob

Serverdan yuboriladigan voqealar (SSE) HTML5 ga kirgan bo'lib, ular serverdan mijozga ma'lumotlarni bir yo'nalishda, real vaqtda, HTTP ulanishi orqali uzatish uchun mo'ljallangan. Bu, mijoz doimiy ravishda so'rov yubormasdan (polling) serverdan yangilanishlarni olish imkonini beradi. Boshqa texnologiyalarga nisbatan asosiy afzalliklari:

  • Oddiylik: Oddiy HTTP ulanishini ishlatadi, bu esa mavjud veb texnologiyalar va infratuzilma bilan integratsiyani osonlashtiradi.
  • Samaradorlik: Serverga tayyor bo'lsa, ma'lumotlarni yuborishga imkon beradi, bu tarmoq va serverga yukni kamaytiradi, tez-tez polling qilishga nisbatan.
  • Avtomatik qayta ulanish: Brauzer uzilish holatida ulanishni avtomatik ravishda tiklashga harakat qiladi.
  • Ichki ishlov berish: Brauzerdagi EventSource API voqealar va ma'lumotlar bilan ishlash uchun oddiy interfeys taqdim etadi.

Mijoz tomonida foydalanish misoli:

// SSE uchun server URLini ko'rsatib, yangi EventSource ob'ektini yarating
const eventSource = new EventSource('/updates');

// 'message' voqeasini ishlash - serverdan ma'lumotlarni qabul qilish
eventSource.onmessage = function(event) {
  // Olingan ma'lumotlarni konsolga chiqarish
  console.log('Yangi ma'lumotlar serverdan:', event.data);
};

// Ulanish xatoliklarini ishlash
eventSource.onerror = function(error) {
  console.error('Xatolik yuz berdi:', error);
};

Serverda javob MIME turi text/event-stream bo'lishi va quyidagicha formatda bo'lishi kerak:

data: Bu birinchi ma'lumot satri\n
data: Bu ikkinchi ma'lumot satri\n\n

Har bir xabar ikki yangi satr bilan tugaydi (\n\n). Har bir ma'lumot satri data: bilan boshlanadi. Boshqa maydonlar, masalan, event: voqeaning turini yoki id: xabar identifikatorini ko'rsatish uchun bo'lishi mumkin.

Serverdan yuboriladigan voqealar, server mijozga yangilanishlar oqimini yuborishi kerak bo'lgan holatlar uchun yaxshi tanlovdir, masalan, bildirishnomalar, yangiliklar lentasi, aksiyalar kurslari yoki uzoq davom etadigan jarayonlarning natijalari. Ular WebSocketlarga qaraganda, bir yo'nalishda aloqa uchun, amalga oshirishda oddiyroq.