WebRTC (Web Real-Time Communication) হল একটি প্রযুক্তি যা পিয়ার-টু-পিয়ার (P2P) যোগাযোগের মাধ্যমে অডিও, ভিডিও এবং ডেটা শেয়ার করতে ব্যবহৃত হয়। WebRTC-এর একটি গুরুত্বপূর্ণ অংশ হল offer-answer সিকোয়েন্স, যা পিয়ার-টু-পিয়ার সংযোগ প্রতিষ্ঠার সময় ব্যবহৃত হয়। এই প্রক্রিয়াটি signaling স্টেপের অংশ এবং দুটি পিয়ার (ক্লায়েন্ট) একে অপরের সাথে যোগাযোগ শুরু করার জন্য এই সিকোয়েন্সটি অনুসরণ করে।
Offer এবং Answer সিকোয়েন্সের ভূমিকা
WebRTC এর পিয়ার-টু-পিয়ার সংযোগের জন্য offer এবং answer সিকোয়েন্সটি যোগাযোগের জন্য একটি নির্দিষ্ট আদান-প্রদান প্রক্রিয়া। এটি সংযোগ স্থাপন, মিডিয়া কনফিগারেশন, এবং স্ট্রিমের ধরন নির্ধারণে ব্যবহৃত হয়। যখন একটি পিয়ার অন্য পিয়ারের সাথে সংযোগ স্থাপন করতে চায়, তখন প্রথম পিয়ার একটি offer পাঠায় এবং দ্বিতীয় পিয়ার সেই offer গ্রহণ করে একটি answer পাঠায়।
Offer সিকোয়েন্স
Offer হল প্রথম পদক্ষেপ, যেখানে প্রথম পিয়ার (উদাহরণস্বরূপ ক্লায়েন্ট A) দ্বিতীয় পিয়ার (ক্লায়েন্ট B) এর কাছে সংযোগ স্থাপনের জন্য একটি প্রস্তাব পাঠায়। এই প্রস্তাবটি SDP (Session Description Protocol) ফর্ম্যাটে থাকে, যা মিডিয়া কনফিগারেশন এবং স্ট্রিমের ধরন সম্পর্কে তথ্য দেয়।
Offer সিকোয়েন্সের কার্যপ্রণালী:
MediaStream তৈরি করা:
প্রথমে getUserMedia API ব্যবহার করে মিডিয়া স্ট্রিম তৈরি করা হয় (ভিডিও এবং অডিও)। এটি সেই স্ট্রিমটিকে পাঠানোর জন্য প্রস্তুত করে।navigator.mediaDevices.getUserMedia({ video: true, audio: true }) .then((stream) => { // Stream পাঠানোর জন্য পিয়ার কনফিগারেশন তৈরি করা const offerOptions = { offerToReceiveAudio: 1, offerToReceiveVideo: 1 }; peerConnection.createOffer(offerOptions) .then((offer) => { peerConnection.setLocalDescription(offer); // Offer ক্লায়েন্ট B কে পাঠানো হবে }) .catch(handleError); }) .catch(handleError);- SDP Offer তৈরি:
এই স্ট্রিম থেকে একটি SDP offer তৈরি করা হয় যা মিডিয়া কনফিগারেশন, যেমন ভিডিও রেজোলিউশন এবং অডিও কোডেক, সম্পর্কে তথ্য প্রদান করে। Offer তৈরি হওয়ার পর সেটি setLocalDescription() মেথড ব্যবহার করে স্থানীয় পিয়ার ডিভাইস (ক্লায়েন্ট A) সেট করা হয়। - Offer পাঠানো:
পিয়ার A একটি offer তৈরি করার পর, সেটি সার্ভারের মাধ্যমে পিয়ার B কে পাঠানো হয়। এখানে সার্ভারটি একটি সিগন্যালিং মেকানিজম হিসেবে কাজ করে।
Answer সিকোয়েন্স
Answer হল দ্বিতীয় পিয়ারের (ক্লায়েন্ট B) প্রতিক্রিয়া, যেখানে ক্লায়েন্ট B প্রথম পিয়ার (ক্লায়েন্ট A) থেকে প্রাপ্ত offer গ্রহণ করে এবং একটি answer পাঠায়। এই answer-এ ক্লায়েন্ট B তার মিডিয়া কনফিগারেশন সম্পর্কে তথ্য দেয়।
Answer সিকোয়েন্সের কার্যপ্রণালী:
Offer গ্রহণ:
পিয়ার B যখন A এর offer গ্রহণ করে, তখন এটি সেই offer সেট করে এবং প্রক্রিয়া শুরু করে। এই সময় setRemoteDescription() মেথড ব্যবহার করে A এর offer পিয়ার B এর কাছে সেট করা হয়।peerConnection.setRemoteDescription(new RTCSessionDescription(offer));Answer তৈরি:
এরপর, পিয়ার B তার কনফিগারেশন অনুযায়ী একটি SDP answer তৈরি করে, যা সাধারণত A এর offer-এ কিছু পরিবর্তন বা মিল থাকতে পারে।peerConnection.createAnswer() .then((answer) => { peerConnection.setLocalDescription(answer); // Answer A কে পাঠানো হবে }) .catch(handleError);- Answer পাঠানো:
পিয়ার B একটি answer তৈরি করার পর, সেটি আবার সিগন্যালিং সার্ভারের মাধ্যমে পিয়ার A-কে পাঠানো হয়। A তখন সেই answer গ্রহণ করে এবং সংযোগ স্থাপন প্রক্রিয়া সম্পন্ন হয়।
Offer এবং Answer সিকোয়েন্সের সম্পূর্ণ প্রক্রিয়া
- পিয়ার A প্রথমে getUserMedia() ব্যবহার করে তার মিডিয়া স্ট্রিম তৈরি করে এবং একটি offer তৈরি করে।
- পিয়ার A createOffer() মেথড ব্যবহার করে SDP offer তৈরি করে এবং সেটি setLocalDescription() ব্যবহার করে স্থানীয় পেয়ার (A) সেট করে।
- পিয়ার A তার offer সিগন্যালিং সার্ভারের মাধ্যমে পিয়ার B কে পাঠায়।
- পিয়ার B setRemoteDescription() ব্যবহার করে A এর offer গ্রহণ করে এবং এটি প্রসেস করে।
- পিয়ার B createAnswer() মেথড ব্যবহার করে তার নিজস্ব SDP answer তৈরি করে এবং সেটি setLocalDescription() ব্যবহার করে সেট করে।
- পিয়ার B তার answer সিগন্যালিং সার্ভারের মাধ্যমে পিয়ার A-কে পাঠায়।
- পিয়ার A setRemoteDescription() ব্যবহার করে B এর answer গ্রহণ করে, এবং সংযোগ সফলভাবে স্থাপিত হয়।
সারাংশ
Offer এবং Answer সিকোয়েন্স হল WebRTC-এর পিয়ার-টু-পিয়ার সংযোগ প্রতিষ্ঠার একটি গুরুত্বপূর্ণ অংশ। প্রথম পিয়ার একটি offer পাঠায়, এবং দ্বিতীয় পিয়ার সেই offer গ্রহণ করে একটি answer পাঠায়। এই প্রক্রিয়াটি SDP (Session Description Protocol) ব্যবহার করে সংযোগ এবং মিডিয়া কনফিগারেশন প্রতিষ্ঠিত হয়, যা শেষ পর্যন্ত পিয়ার-টু-পিয়ার সংযোগ স্থাপন করতে সহায়তা করে। WebRTC এর এই সিকোয়েন্সটি রিয়েল-টাইম কমিউনিকেশন অ্যাপ্লিকেশনগুলিতে একটি অপরিহার্য ভূমিকা পালন করে।
Read more