WebSockets менен реалдуу убакыт
Өзгөрүүлөрдү сурап туруунун ордуна сервер менен клиенттин ортосунда ачык эки тараптуу каналды кармаңыз.
- WebSocket’тин upgrade кол алышуусун жана анын сурап туруудан айырмасын түшүндүрө;
wsменен төмөнкү деңгээлдеги серверди жана Socket.IO менен «баары камтылган» серверди кура;- жаңылоолорду жөнөтө, бөлмөлөрдү колдоно жана бир эле учурда көп клиентке кеңири таратуу (broadcast) жасай;
- туташууларды heartbeat менен тирүү кармай жана үзүлүүлөрдөн кайра туташуу аркылуу калыбына келе;
- чыныгы алмашууларды баалай: чийки протокол фреймворкко каршы жана процесстер боюнча масштабдоо.
1. Суроо/жооптон тирүү туташууга
Сиз REST’ти буга чейин билесиз: клиент суроо жөнөтөт, сервер жооп жөнөтөт, бүттү. Жаңы маалымат жөнүндө билиш үчүн клиент кайра сурашы керек. Эң эски ыкма -- сурап туруу (polling): ар бир нече секунд сайын GET /messages дегенди чакыруу. Бул иштейт, бирок эч нерсе өзгөрбөгөндө суроолорду текке кетирет жана кечигүү кошот (жаңы билдирүү кийинки сурап туруунун чейин күтөт). Узак сурап туруу (long-polling) муну жакшыртат: маалымат пайда болмоюнча суроону ачык кармайт, бирок бул дагы деле бир окуяга бир жооп жана дайыма кайра туташуу.
WebSocket көйгөйдүн тамырын чечет. Клиент Upgrade: websocket аталышы менен кадимки HTTP суроосун ачат; сервер 101 Switching Protocols жообу менен макул болот; ушул учурдан тартып ошол эле TCP туташуусу кадрлардын (frames) эки багыттуу агымына айланат. Ар бир билдирүүгө жаңы кол алышуу жок, жана сервер каалаган учурда маалымат жөнөтө алат.
Салыштыруу. Сурап туруу -- бул дүкөнгө ар мүнөт сайын чалып «жаңылык барбы?» деп сураганга окшош. WebSocket -- бул линияны ачык калтыруу: жаңылык пайда болор замат, экөөңүздүн бириңиз жөн эле сүйлөйсүз -- кайра чалуусуз.