Server-Sent Events (SSE) менен реалдуу убакытта жаңылоолор
Кадимки HTTP аркылуу жандуу маалымат үчүн жеңил бир тараптуу канал
text/event-stream түрүндө болуп, жөн эле эч качан бүтпөйт. Дашборддор, билдирүүлөр, баа тикерлери жана прогресс индикаторлору үчүн -- маалымат сервер -> клиент багытында агып, тескерисинче сейрек болгон жерде -- SSE көбүнчө толук WebSocket'ко караганда жөнөкөй жана ишенимдүү. WebSocket менен сиз бул курста тааныштыңыз; бул сабак сизге көптөгөн бир тараптуу учурлар үчүн жеңилирээк куралды берет.
- SSE окуяларды бир keep-alive HTTP-жооп аркылуу кантип агызарын түшүндүрүү;
text/event-streamформатын жазуу --id,event,data,retryталаалары жана комментарийлер;- агымды браузерде
EventSourceжана аталган окуялар менен кабыл алуу; - үзгүлтүксүз улантуу үчүн автоматтык кайра туташууну жана
Last-Event-IDколдонуу; - байланышты heartbeat менен жандуу кармап, прокси буферлешин жеңүү;
- SSE качан туура курал, WebSockets качан туура экенин чынчыл чечүү.
1. SSE деген эмне жана эмне үчүн керек
Серверден жаңы маалымат алуунун классикалык жолу -- бул сурамжылоо (polling): клиент бир нече секунд сайын "жаңы нерсе барбы?" деп сурайт. Сурамжылоо эч нерсе өзгөрбөгөндө сурамдарды текке кетирет жана өзгөрүү болгондо да кечигүү кошот. SSE муну тескери айлантат. Клиент байланышты бир жолу ачат, ал эми сервер ошол жоопту ачык кармап, жаңы окуялар пайда болгон сайын аларды ага жазат. Браузер муну EventSource деген кичинекей орнотулган API аркылуу берет.
Транспорт кадимки HTTP болгондуктан, SSE HTTP берген нерселердин баарын мурас кылат: ал сиздин веб-тиркемеңиз менен бир эле портто иштейт, кадимки веб-трафикке уруксат берген файрволдор жана прокси аркылуу өтөт, ошондой эле TLS жана cookie менен оңой корголот. Инфраструктурада өзүнчө протокол ачуунун кереги жок.
Салыштыруу. Сурамжылоо -- бул поездиңиз кечигип жатабы деп вокзалга ар мүнөт сайын чалганга окшош. SSE -- бул радиоуктуруу: сиз бир жолу тууралайсыз, ал эми жарыялар окуялар болгон сайын келет. Радиодон сиз жооп бербейсиз -- жана каттам үчүн бул керек эмес. Дал ушул бир тараптуу формага SSE курулган.
SSE -- бул браузердин стандарты (HTML'дин бир бөлүгү), андыктан клиент тарабын ойлоп табуунун кереги жок: кайра туташуу, окуяларды талдоо жана Last-Event-ID иштетүү сиз үчүн EventSource тарабынан жасалат. Серверде сиздин милдетиңиз -- жөнөкөй форматта туура сүйлөө гана.