𝗪𝗲𝗯𝗦𝗼𝗰𝗸𝗲𝘁 𝗮𝗻𝗱 𝗦𝗦𝗘 𝗶𝗻 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲
આધુનિક એપ્સ માટે રીઅલ-ટાઇમ ડેટા અત્યંત મહત્વપૂર્ણ છે. તમારે ચેટ, લાઈવ ડેશબોર્ડ્સ અને નોટિફિકેશન્સ માટે તેની જરૂર પડે છે.
Hyperlane એ એક ઝડપી Rust HTTP સર્વર લાઇબ્રેરી છે. તે રીઅલ-ટાઇમ ડેટા મોકલવા માટે બે મુખ્ય રીતોને સપોર્ટ કરે છે: WebSocket અને Server-Sent Events (SSE).
WebSocket વિરુદ્ધ SSE
WebSocket દ્વિમાર્ગી (bidirectional) છે. ક્લાયન્ટ અને સર્વર બંને કોઈપણ સમયે સંદેશા મોકલી શકે છે. તે એક સિંગલ TCP કનેક્શનનો ઉપયોગ કરે છે. ચેટ એપ્સ અથવા ઓનલાઇન ગેમ્સ માટે આનો ઉપયોગ કરો.
SSE એકમાર્ગી (unidirectional) છે. ફક્ત સર્વર જ ક્લાયન્ટને ડેટા મોકલે છે. તે સ્ટાન્ડર્ડ HTTP નો ઉપયોગ કરે છે. ન્યૂઝ ફીડ્સ અથવા સ્ટોક ટિકર્સ માટે આનો ઉપયોગ કરો.
Hyperlane માં WebSocket
WebSockets ને સરળ બનાવવા માટે Hyperlane એટ્રિબ્યુટ મેક્રોનો (attribute macros) ઉપયોગ કરે છે.
- WebSocket રિક્વેસ્ટને ઓળખવા માટે
#[is_ws_upgrade_type]નો ઉપયોગ કરો. - ડેટા મેળવવા માટે
#[try_get_websocket_request]નો ઉપયોગ કરો.
તમે સરળ કમાન્ડ્સ સાથે કનેક્શન લાઇફ સાયકલનું સંચાલન કરી શકો છો. તમે વ્યક્તિગત ફ્રેમ્સ અથવા ફ્રેમ્સની યાદી મોકલી શકો છો. તમે એકસાથે ઘણા વપરાશકર્તાઓને સંદેશા મોકલવા માટે hyperlane-broadcast જેવા સાધનોનો પણ ઉપયોગ કરી શકો છો.
Hyperlane માં SSE
SSE સેટઅપ કરવું વધુ સરળ છે. તમારે ફક્ત એક હેડર સેટ કરવાની જરૂર છે: Content-Type: text/event-stream.
બ્રાઉઝર આપમેળે રીકનેક્શન હેન્ડલ કરે છે. આ તેને સાદા ડેટા સ્ટ્રીમ્સ માટે ખૂબ જ વિશ્વસનીય બનાવે છે. દરેક સંદેશ એક સરળ ટેક્સ્ટ ફોર્મેટ અનુસરે છે: data:
ઝડપી તુલના
• દિશા: WebSocket બે-માર્ગી છે. SSE ફક્ત સર્વર-થી-ક્લાયન્ટ છે.
• પ્રોટોકોલ: WebSocket ws:// નો ઉપયોગ કરે છે. SSE સ્ટાન્ડર્ડ HTTP નો ઉપયોગ કરે છે.
• રીકનેક્શન: તમારે WebSocket રીકનેક્શન મેન્યુઅલી હેન્ડલ કરવા પડશે. બ્રાઉઝર્સ SSE માટે તે આપમેળે કરે છે.
• ડેટા પ્રકાર: WebSocket બાઈનરી ડેટાને સપોર્ટ કરે છે. SSE ફક્ત ટેક્સ્ટને સપોર્ટ કરે છે.
• જટિલતા: WebSocket બનાવવું વધુ અઘરું છે. SSE સરળ છે.
જો તમારે લો લેટન્સી (low latency) અને બે-માર્ગી વાતચીતની જરૂર હોય તો WebSocket પસંદ કરો. જો તમારે વપરાશકર્તાઓને અપડેટ્સ મોકલવા માટે સરળ રીત જોઈતી હોય તો SSE પસંદ કરો.
Hyperlane તમને Rust માં બંનેને કાર્યક્ષમ રીતે બનાવવા માટેના સાધનો આપે છે.
Project Code: https://github.com/hyperlane-dev/hyperlane