Чаро дар HTML5 чорабинии server-sent ворид карда шуданд?
sobes.tech AI
Ҷавоб аз AI
Ҳамкордан юборилган воқеалар (SSE) HTML5 га киритилган бўлиб, улар сервердан мижозга маълумотларни бир йўналишда, реал вақтда, HTTP уланиши орқали ўтказиш учун мўлжалланган. Бу мижозга сервердан янгиланишларни олишга имкон беради, мижоз доимий равишда сўров юборишига (polling) эҳтиёж йўқ. Бошқа технологияларга нисбатан асосий афзалликлари:
- Осонлик: Оддий HTTP уланишини ишлатади, бу мавжуд веб технологиялари ва инфратузилма билан интеграцияни осонлаштиради.
- Самарадорлик: Серверга тайёр бўлганда маълумотларни юборишга imkon беради, тармоқ ва сервер юкламасини камайтириб, тез-тез polling билан муқоиса қилганда.
- Автоматик қайта уланиш: Браузер узилиш ҳолатларида автоматик равишда уланишни қайта тиклайди.
- Ички ишлов бериш: Браузерда
EventSourceAPI воқеалар ва маълумотлар билан ишлаш учун оддий интерфейс тақдим этади.
Мижоз томонида қўлланиш намунаси:
// SSE учун сервер URL-ини кўрсатиб, янги EventSource объектини яратинг
const eventSource = new EventSource('/updates');
// 'message' воқеасини ишлаш - сервердан маълумот олиш
eventSource.onmessage = function(event) {
// Олинган маълумотларни консольда кўрсатиш
console.log('Янги маълумотлар сервердан:', event.data);
};
// Уланиш хато ҳолатларини ишлаш
eventSource.onerror = function(error) {
console.error('Хатолик юз берди:', error);
};
Серверда жавоб text/event-stream MIME турида бўлиши ва қуйидагича форматланиши керак:
data: Бу биринчи маълумот сатридир\n
data: Бу иккинчи маълумот сатридир\n\n
Ҳар бир хабар икки қатор қайтиб келади (\n\n). Ҳар бир маълумот сатр data: билан бошланади. Бошқа майдонлар ҳам бўлиши мумкин, масалан, event: воқеа турини кўрсатиш ёки id: хабарнинг идентификатори учун.
Сервердан юборилган воқеалар однока йўналишда алоқа учун WebSockets га қараганда, осонроқ ва тезроқ амалга оширилади.