𝗪𝗲𝗯𝗦𝗼𝗰𝗸𝗲𝘁 𝗮𝗻𝗱 𝗦𝗦𝗘 𝗶𝗻 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲
Data ya wakati halisi ni muhimu kwa programu za kisasa. Unaihitaji kwa ajili ya mazungumzo (chat), dashibodi za moja kwa moja, na arifa.
Hyperlane ni maktaba ya haraka ya seva ya HTTP ya Rust. Inasaidia njia kuu mbili za kutuma data ya wakati halisi: WebSocket na Server-Sent Events (SSE).
WebSocket dhidi ya SSE
WebSocket ni ya pande mbili (bidirectional). Client na seva zote zinaweza kutuma ujumbe wakati wowote. Inatumia muunganisho mmoja wa TCP. Itumie kwa programu za chat au michezo ya mtandaoni.
SSE ni ya upande mmoja (unidirectional). Ni seva pekee inayotuma data kwa client. Inatumia HTTP ya kawaida. Itumie kwa habari zinazosasishwa (news feeds) au viashiria vya hisa (stock tickers).
WebSocket katika Hyperlane
Hyperlane hutumia attribute macros kurahisisha WebSockets.
- Tumia #[is_ws_upgrade_type] kutambua ombi la WebSocket.
- Tumia #[try_get_websocket_request] kupata data.
Unaweza kudhibiti mzunguko wa maisha ya muunganisho (connection life cycle) kwa amri rahisi. Unaweza kutuma fremu (frames) moja moja au orodha ya fremu. Pia unaweza kutumia zana kama hyperlane-broadcast kutuma ujumbe kwa watumiaji wengi kwa wakati mmoja.
SSE katika Hyperlane
SSE ni rahisi zaidi kusanidi. Unahitaji tu kuweka kichwa kimoja (header): Content-Type: text/event-stream.
Kivinjari (browser) hushughulikia muunganisho upya (reconnection) kiotomatiki. Hii huifanya iwe ya kuaminika sana kwa mtiririko rahisi wa data. Kila ujumbe hufuata muundo rahisi wa maandishi: data:
Ulinganisho wa Haraka
• Mwelekeo: WebSocket ni ya njia mbili. SSE ni kutoka kwa seva kwenda kwa client pekee. • Itifaki: WebSocket hutumia ws://. SSE hutumia HTTP ya kawaida. • Muunganisho upya: Lazima ushughulikie muunganisho upya wa WebSocket kwa mkono. Vivinjari hufanya hivyo kwa SSE. • Aina ya Data: WebSocket inasaidia data ya binary. SSE inasaidia maandishi pekee. • Ugumu: WebSocket ni ngumu zaidi kujenga. SSE ni rahisi zaidi.
Chagua WebSocket ikiwa unahitaji ucheleweshaji mdogo (low latency) na mazungumzo ya njia mbili. Chagua SSE ikiwa unahitaji njia rahisi ya kutuma sasisho kwa watumiaji.
Hyperlane inakupa zana za kujenga zote mbili kwa ufanisi katika Rust.
Msimbo wa Mradi: https://github.com/hyperlane-dev/hyperlane