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 // Վերակապման հաջորդ փորձի ուշացում միլիվայրկյաններով