Hyperlane-এ WebSocket এবং SSE
আধুনিক অ্যাপের জন্য রিয়েল-টাইম ডেটা অত্যন্ত গুরুত্বপূর্ণ। চ্যাট, লাইভ ড্যাশবোর্ড এবং নোটিফিকেশনের জন্য এটি প্রয়োজন।
Hyperlane হলো একটি দ্রুত Rust HTTP সার্ভার লাইব্রেরি। এটি রিয়েল-টাইম ডেটা পাঠানোর জন্য দুটি প্রধান পদ্ধতি সমর্থন করে: WebSocket এবং Server-Sent Events (SSE)।
WebSocket বনাম SSE
WebSocket হলো bidirectional (উভয়মুখী)। ক্লায়েন্ট এবং সার্ভার উভয়ই যেকোনো সময় মেসেজ পাঠাতে পারে। এটি একটি একক TCP কানেকশন ব্যবহার করে। চ্যাট অ্যাপ বা অনলাইন গেমের জন্য এটি ব্যবহার করুন।
SSE হলো unidirectional (একমুখী)। শুধুমাত্র সার্ভার ক্লায়েন্টের কাছে ডেটা পাঠায়। এটি স্ট্যান্ডার্ড HTTP ব্যবহার করে। নিউজ ফিড বা স্টক টিকারের জন্য এটি ব্যবহার করুন।
Hyperlane-এ WebSocket
WebSocket সহজ করার জন্য Hyperlane attribute macros ব্যবহার করে।
- WebSocket রিকোয়েস্ট শনাক্ত করতে
#[is_ws_upgrade_type]ব্যবহার করুন। - ডেটা পেতে
#[try_get_websocket_request]ব্যবহার করুন।
আপনি সহজ কমান্ডের মাধ্যমে কানেকশন লাইফ সাইকেল ম্যানেজ করতে পারেন। আপনি আলাদা আলাদা ফ্রেম বা ফ্রেমের লিস্ট পাঠাতে পারেন। একসাথে অনেক ব্যবহারকারীকে মেসেজ পাঠানোর জন্য আপনি hyperlane-broadcast এর মতো টুলসও ব্যবহার করতে পারেন।
Hyperlane-এ SSE
SSE সেটআপ করা সহজ। আপনাকে শুধু একটি হেডার সেট করতে হবে: Content-Type: text/event-stream।
ব্রাউজার স্বয়ংক্রিয়ভাবে reconnection হ্যান্ডেল করে। এটি সাধারণ ডেটা স্ট্রিমের জন্য এটিকে অত্যন্ত নির্ভরযোগ্য করে তোলে। প্রতিটি মেসেজ একটি সহজ টেক্সট ফরম্যাট অনুসরণ করে: data: <message>।
দ্রুত তুলনা
• Direction: WebSocket হলো দুইমুখী। SSE শুধুমাত্র সার্ভার-টু-ক্লায়েন্ট।
• Protocol: WebSocket ws:// ব্যবহার করে। SSE স্ট্যান্ডার্ড HTTP ব্যবহার করে।
• Reconnection: আপনাকে ম্যানুয়ালি WebSocket reconnect হ্যান্ডেল করতে হবে। ব্রাউজার SSE-এর জন্য এটি নিজে থেকেই করে।
• Data Type: WebSocket বাইনারি ডেটা সাপোর্ট করে। SSE শুধুমাত্র টেক্সট সাপোর্ট করে।
• Complexity: WebSocket তৈরি করা কঠিন। SSE সহজ।
যদি আপনার low latency এবং দুইমুখী কথোপকথন প্রয়োজন হয়, তবে WebSocket বেছে নিন। যদি ব্যবহারকারীদের কাছে আপডেট পাঠানোর সহজ উপায় প্রয়োজন হয়, তবে SSE বেছে নিন।
Hyperlane আপনাকে Rust-এ এই উভয়টিই দক্ষতার সাথে তৈরি করার জন্য প্রয়োজনীয় টুলস প্রদান করে।
Project Code: https://github.com/hyperlane-dev/hyperlane