Sobes.tech
Middle+

HTML5те server-sent окуялары эмне үчүн киргизилди?

sobes.tech AI

AIден жооп

Бир тараптуу байланыш каналын ишке ашыруу үчүн, сервер жана кардар ортосунда, сервер байланыш орнотулгандан кийин каалаган убакта маалымат жибере алат:

Негизги өзгөчөлүктөр жана артыкчылыктар:

  • эффективдүүлүк: Жөнөкөй HTTP-байланыш колдонулат, pollingге салыштырмалуу чыгымдарды азайтат
  • жөнөкөйлүк: server-sent events (SSE) API WebSocketsке караганда бир тараптуу байланыш үчүн пайдалануусу оңой
  • автоматтык кайра туташуу: браузер байланышты үзүлгөндө автоматтык түрдө кайра туташууга аракет кылат
  • маалымат түрлөрүн колдоо: text/event-stream форматында тексттик маалыматтарды жиберүүгө болот
  • браузерлердин колдоосу: заманбап браузерлер тарабынан кеңири колдоого алынган

Колдонуу:

  • жаңылыктар ленталарын реалдуу убакытта жаңыртуу
  • окуялар жөнүндө билдирүүлөр (мисалы, жаңы билдирүүлөр)
  • реалдуу убакытта маалыматтарды мониторингдөө (мисалы, биржалык котировкалар)
  • узак мөөнөттүү тапшырмалардын прогрессин көрсөтүү

Бул традициялык pollingдин альтернативи, анда кардар мезгил-мезгили менен серверден жаңылыктарды сурайт. WebSocketsтен айырмаланып, SSE бир тараптуу, бул алардын колдонулушун жеңилдетет, анткени маалыматтар гана серверден кардарга өтөт.

Клиент тараптагы мисал (JavaScript):

const eventSource = new EventSource('/events'); // Серверден окуяларды алуу үчүн URL

eventSource.onmessage = function(event) {
  // алынган маалыматтарды иштетүү
  console.log('Алына турган билдирүү:', event.data);
};

eventSource.onerror = function(error) {
  // байланыштагы каталарды иштетүү
  console.error('Server-Sent Events катасы:', error);
};

eventSource.addEventListener('customEvent', function(event) {
  // 'customEvent' түрүндөгү өзгөчө окуяны иштетүү
  console.log('Алына турган өзгөчө окуя:', event.data);
});

Сервер тараптан маалыматтардын форматынын мисалы:

event: customEvent
data: {"message": "Салам!"}

data: Жөнөкөй билдирүү

id: 123 // Окуянын идентификатору, автоматтык кайра туташуу үчүн колдонулат

retry: 5000 // Кийинки кайра туташуу аралыгы миллисекунддарда