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