𝗞𝘂𝘀𝗮𝗻𝗶𝗱𝗶 𝗦𝗼𝗰𝗸𝗲𝘁.𝗶𝗼
Programu nyingi za wavuti hutumia HTTP. Mtiririko hufuata mfumo rahisi:
Client hutuma ombi. Server hutuma jibu. Muunganisho unafungwa.
Hii hufanya kazi kwa ajili ya uthibitishaji (authentication) au kupata data. Inafeli wakati server inapohitaji kutuma data bila ombi.
Ikiwa mwanachama wa timu anafanya marekebisho kwenye kazi au hali inabadilika, HTTP huifanya browser kuuliza "Je, kuna data mpya?" mara kwa mara. Hii inaitwa polling. Inapoteza rasilimali.
Socket.io hutatua hili. Inatengeneza muunganisho endelevu. Muunganisho unabaki wazi.
Mawasiliano yanakuwa ya pande mbili: Client ↔ Server
Client hutuma data. Server hutuma data. Hii inawezesha programu za wakati halisi (real-time apps).
Kosa la kawaida ni kujaribu kuunganisha Socket.io moja kwa moja kwenye Express. Express huficha seva ya HTTP iliyopo chini yake. Socket.io inahitaji ufikiaji wa moja kwa moja kwenye seva hiyo.
Badala yake, fanya hivi:
- Tengeneza seva ukitumia programu yako ya Express.
- Unganisha Socket.io kwenye seva hiyo.
- Anza kusikiliza kwenye port.
Socket.io inategemea mbinu (methods) mbili:
• socket.emit(): Tuma tukio (event).
• socket.on(): Sikiliza tukio (event).
Rooms hufanya Socket.io kuwa na ufanisi. Zifikirie kama chaneli za walkie-talkie. Unaweza kuwakusanya watumiaji katika vyumba maalum vya miradi (project rooms).
Mtumiaji anapofungua mradi, anajiunga na chumba (room). Wakati mabadiliko yanapotokea, unatuma tukio hilo kwenye chumba hicho mahususi pekee. Hii inazuia kutuma data kwa watumiaji ambao hawaihitaji.
Utekelezaji sahihi ni muhimu. Usiweke mantiki ya biashara (business logic) ndani ya kishughulikiaji (handler) wa Socket.io. Iweke kwenye vishughulikiaji vyako vya njia (route handlers).
Mtiririko sahihi ni:
- Mtumiaji hutuma ombi kwenye njia (route).
- Server inafanya marekebisho kwenye kanzi data (database).
- Operesheni ya kanzi data inafanikiwa.
- Server inatuma tukio la Socket.io.
- Client zinahuisha (update) UI zao.
Usitume tukio kabla ya kanzi data kuthibitisha mabadiliko.
Ili kuweka kodi yako katika hali safi, hifadhi mfano (instance) wa Socket.io kwenye programu ya Express. Tumia app.set("io", io). Hii inaruhusu njia yoyote kufikia mfano huo bila hitaji la kuingiza (imports) vitu vingi kwa usumbufu.
Mawasiliano ya wakati halisi yanamaanisha watumiaji huona mabadiliko papo hapo bila kuhitaji kuifanyia upya (refresh) ukurasa.
Chanzo: https://dev.to/chinwuba_jeffrey/setting-up-socketio-a42