𝗕𝘂𝗶𝗹𝗱𝗶𝗻𝗴 𝗥𝗲𝗮𝗹-𝗧𝗶𝗺𝗲 𝗔𝗽𝗽𝘀 𝘄𝗶𝘁𝗵 𝗪𝗲𝗯𝗦𝗼𝗰𝗸𝗲𝘁𝘀
Polling ni mbaya kwa programu yako.
Wakati mmoja nilitengeneza chat widget kwa kutumia AJAX polling. Niliweka programu iulize seva ujumbe mpya kila sekunde. Ilifanya kazi, lakini ilikuwa polepole. UI ilionekana kuwa na ucheleweshaji (laggy). Seva ilifanya kazi kupita kiasi. Maombi mengi yalirudisha data tupu. Ilikuwa kama kujaribu kujaza bafu kwa kijiko kidogo cha chai.
WebSockets zinabadilisha hili.
Badala ya maombi ya mara kwa mara, unafungua muunganisho mmoja wa kudumu. Hii inaruhusu mtiririko wa data wa pande mbili. Seva inaweza kutuma data kwa client papo hapo. Client inaweza kutuma data kwa seva papo hapo.
Kwa nini utumie WebSockets?
• Latency inapungua kutoka mamia ya milisekunde hadi makumi ya milisekunde. • Mzigo wa seva unakuwa unaotabirika. • Unaokoa bandwidth kwa kuondoa HTTP headers zinazojirudia. • Inafanya kazi kwa chat, live notifications, na michezo ya multiplayer.
Jinsi inavyofanya kazi:
Muunganisho huanza na ombi la HTTP upgrade. Ikiwa seva itakubali, inatuma 101 status code. Baada ya hapo, unatumia raw binary au text protocol. Hakuna tena cookies au headers zinazokuchelewesha.
Mitego ya kawaida ya kuepuka:
- Connection drops: Mitandao hukatika. Lazima utekeleze mkakati wa kujaribu tena kama exponential backoff.
- Memory leaks: Zima kila wakati sockets zako mtumiaji anapoondoka. Zombie connections zinakula kumbukumbu ya seva.
- Message loops: Unapotangaza ujumbe (broadcasting), ruka mtumaji wa awali. Vinginevyo, mtumiaji ataona ujumbe wake mwenyewe mara mbili.
- Idle connections: Baadhi ya proxies hufunga miunganisho isiyo na sauti. Tumia ping/pong heartbeat ili kuweka socket ikiwa hai.
Acha kuiuliza seva ikiwa kitu kimebadilika. Anza kuweka njia wazi ili uweze kuzungumza wakati wowote unapohitaji.
Changamoto yako:
Chukua mfano wa msingi wa chat. Ongeza kiashiria cha "typing...". Deploy kwenye host kama Render au Fly.io. Mara tu unapoona kiashiria hicho kikitembea kwa wakati halisi bila polling, umepiga hatua kubwa.