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 // Кийинки кайра туташуу аралыгы миллисекунддарда