HTML5те server-sent окуялары эмне үчүн киргизилди?
sobes.tech AI
AIден жооп
Server-sent events (SSE) HTML5те киргизилген, серверден клиентке маалыматтарды бир тараптуу, реалдуу убакыт режиминде, HTTP байланышы аркылуу өткөрүү үчүн. Бул серверден жаңыртууларды алуу мүмкүнчүлүгүн берет, ал эми кардар үзгүлтүксүз суроо-талаптарды (полиң) жөнөтүүнүн кажети жок. Башка технологияларга салыштырмалуу негизги артыкчылыктары:
- Жөнөкөйлүк: Жөнөкөй HTTP байланышын колдонуп, бул азыркы веб-технологиялар жана инфраструктура менен интеграцияны жеңилдетет.
- Иштөөнүн натыйжалуулугу: Сервер даяр болгон учурда гана маалыматтарды жиберет, тармак жана сервер жүктөмүн азайтат, көпчүлүк полиңге салыштырмалуу.
- Автоматтык кайра туташуу: Браузер байланышты үзүлгөндө автоматтык түрдө калыбына келтирүүгө аракет кылат.
- Кирилген иштетүү: Браузердеги
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);
};
Сервердин жообу MIME-тип text/event-stream болушу керек жана төмөнкүдөй форматта болушу керек:
data: Бул биринчи маалымат саптары\n
data: Бул экинчи саптар\n\n
Ар бир билдирүү эки жаңы саптаманын (\n\n) менен аяктайт. Ар бир маалымат саптары data: менен башталат. Башка талаалар да болушу мүмкүн, мисалы, event: — окуянын түрүн белгилөө үчүн же id: — билдирүүнүн идентификатору үчүн.
Server-sent events жакшы тандоо болуп саналат, эгер сервер клиентке жаңыртуулардын агымын жибериши керек болсо, мисалы, билдирүүлөр, жаңылыктар тасмалары, акциялардын котировкалары же узак мөөнөттүү процесстердин жыйынтыктары. Алар WebSocketsке караганда жөнөкөйрөө, бир тараптуу байланыш үчүн.