Sobes.tech
Middle

Ինչու են HTML5-ում ներկայացվել server-sent իրադարձությունները:

sobes.tech AI

Պատասխան AI-ից

Սերվերից ուղարկվող իրադարձություններ (SSE) ներդրվել են HTML5-ում՝ տվյալներ սերվերից հաճախորդին միակողմանի փոխանցելու համար, իրական ժամանակում, HTTP կապի միջոցով: Սա թույլ է տալիս ստանալ թարմացումներ սերվերից՝ առանց հաճախորդի մշտական հարցումների (պոլինգ): Հիմնական առավելությունները մյուս տեխնոլոգիաների նկատմամբ՝

  • Պարզություն: Օգտագործում է սովորական HTTP կապ, ինչը հեշտացնում է ինտեգրացիան առկա վեբ տեխնոլոգիաների և ենթակառուցվածքի հետ:
  • Արդյունավետություն: Թույլ է տալիս սերվերին ուղարկել տվյալներ, երբ դրանք պատրաստ են, նվազեցնելով ցանցի և սերվերի բեռը՝ համեմատած հաճախակի պոլինգի:
  • Ավտոմատ վերամիացում: Բրաուզերը ինքնաբերաբար փորձում է վերականգնել կապը ընդհատման դեպքում:
  • Ներքին մշակում: EventSource API-ն բրաուզերում տրամադրում է պարզ ինտերֆեյս իրադարձությունների և տվյալների աշխատանքի համար:

Օգտագործման օրինակ հաճախորդի կողմից՝

// Ստեղծում ենք նոր EventSource օբյեկտ՝ նշելով SSE սերվերի URL-ը
const eventSource = new EventSource('/updates');

// Հետևում ենք 'message' իրադարձությանը՝ ստանալու տվյալներ սերվերից
eventSource.onmessage = function(event) {
  // Տպում ենք ստացված տվյալները կոնսոլում
  console.log('Նոր տվյալներ սերվերից:', event.data);
};

// Հետևում ենք կապի սխալներին
eventSource.onerror = function(error) {
  console.error('Սխալ է տեղի ունեցել:', error);
};

Սերվերի պատասխանն պետք է ունենա MIME-տիպ text/event-stream և ձևաչափվի հետևյալ կերպ՝

data: Սա առաջին տողն է տվյալների\n
data: Սա երկրորդ տողն է\n\n

Յուրաքանչյուր հաղորդագրություն ավարտվում է երկու նոր տողանիշով (\n\n): Տվյալների յուրաքանչյուր տող սկսվում է data: -ով: Կարող են լինել նաև այլ դաշտեր, օրինակ՝ event:՝ իրադարձության տիպը նշելու համար կամ id:՝ հաղորդագրության նույնականացման համար:

Սերվերից ուղարկվող իրադարձությունները լավ ընտրություն են այն սցենարների համար, որտեղ սերվերը պետք է ուղարկի հաճախորդին թարմացումների հոսք, ինչպիսիք են ծանուցումները, նորությունների թերթերը, շուկայական գները կամ երկարաժամկետ գործընթացների արդյունքները: Նրանք ավելի պարզ են իրականացման համար, քան WebSockets-ը, մեկ ուղղությամբ կապի համար։