Hyperlane میں WebSocket اور SSE
جدید ایپس کے لیے ریئل ٹائم (real-time) ڈیٹا انتہائی اہم ہے۔ آپ کو چیٹ، لائیو ڈیش بورڈز اور نوٹیفیکیشنز کے لیے اس کی ضرورت ہوتی ہے۔
Hyperlane ایک تیز رفتار Rust HTTP سرور لائبریری ہے۔ یہ ریئل ٹائم ڈیٹا بھیجنے کے دو اہم طریقے فراہم کرتی ہے: WebSocket اور Server-Sent Events (SSE)۔
WebSocket بمقابلہ SSE
WebSocket دو طرفہ (bidirectional) ہوتا ہے۔ کلائنٹ اور سرور دونوں کسی بھی وقت پیغامات بھیج سکتے ہیں۔ یہ ایک ہی TCP کنکشن استعمال کرتا ہے۔ اسے چیٹ ایپس یا آن لائن گیمز کے لیے استعمال کریں۔
SSE یک طرفہ (unidirectional) ہوتا ہے۔ صرف سرور کلائنٹ کو ڈیٹا بھیجتا ہے۔ یہ اسٹینڈرڈ HTTP استعمال کرتا ہے۔ اسے نیوز فیڈز یا اسٹاک ٹکرز کے لیے استعمال کریں۔
Hyperlane میں WebSocket
Hyperlane WebSockets کو آسان بنانے کے لیے attribute macros کا استعمال کرتا ہے۔
- WebSocket ریکویسٹ کا پتہ لگانے کے لیے #[is_ws_upgrade_type] استعمال کریں۔
- ڈیٹا حاصل کرنے کے لیے #[try_get_websocket_request] استعمال کریں۔
آپ سادہ کمانڈز کے ذریعے کنکشن کے لائف سائیکل (life cycle) کو مینیج کر سکتے ہیں۔ آپ انفرادی فریمز یا فریمز کی فہرستیں بھیج سکتے ہیں۔ آپ ایک ساتھ بہت سے صارفین کو پیغامات بھیجنے کے لیے hyperlane-broadcast جیسے ٹولز بھی استعمال کر سکتے ہیں۔
Hyperlane میں SSE
SSE کو سیٹ اپ کرنا زیادہ آسان ہے۔ آپ کو صرف ایک ہیڈر سیٹ کرنے کی ضرورت ہے: Content-Type: text/event-stream۔
براؤزر خود بخود ری کنکشن (reconnection) کو سنبھال لیتا ہے۔ یہ اسے سادہ ڈیٹا اسٹریمز کے لیے بہت قابل اعتماد بناتا ہے۔ ہر پیغام ایک سادہ ٹیکسٹ فارمیٹ کی پیروی کرتا ہے: data:
فوری موازنہ
• سمت (Direction): WebSocket دو طرفہ ہے۔ SSE صرف سرور سے کلائنٹ تک ہے۔ • پروٹوکول (Protocol): WebSocket میں ws:// استعمال ہوتا ہے۔ SSE میں اسٹینڈرڈ HTTP استعمال ہوتا ہے۔ • ری کنکشن (Reconnection): آپ کو WebSocket کے ری کنکشنز کو دستی طور پر (manually) سنبھالنا ہوگا۔ براؤزر SSE کے لیے یہ کام خود کر لیتا ہے۔ • ڈیٹا کی قسم (Data Type): WebSocket بائنری ڈیٹا کو سپورٹ کرتا ہے۔ SSE صرف ٹیکسٹ کو سپورٹ کرتا ہے۔ • پیچیدگی (Complexity): WebSocket کو بنانا مشکل ہے۔ SSE آسان ہے۔
اگر آپ کو کم لیٹنسی (low latency) اور دو طرفہ بات چیت کی ضرورت ہے تو WebSocket کا انتخاب کریں۔ اگر آپ کو صارفین کو اپ ڈیٹس بھیجنے کے لیے ایک سادہ طریقے کی ضرورت ہے تو SSE کا انتخاب کریں۔
Hyperlane آپ کو Rust میں دونوں کو مؤثر طریقے سے بنانے کے لیے ٹولز فراہم کرتا ہے۔
Project Code: https://github.com/hyperlane-dev/hyperlane