পিয়ার সংযোগ

RTCPeerConnection হল WebRTC API-এর কেন্দ্রীয় ইন্টারফেস। এটি স্থানীয় এবং দূরবর্তী পিয়ারের মধ্যে সংযোগ প্রতিনিধিত্ব করে এবং সংযোগ স্থাপনের জন্য প্রয়োজনীয় সমস্ত ফাংশন এবং ইভেন্ট সরবরাহ করে।

একটি সহকর্মী সংযোগ স্থাপন করা

WebRTC কার্যকারিতা বাস্তবায়নকারী অ্যাপ্লিকেশনগুলি সাধারণত RTCPeerConnection ইন্টারফেসের উপর নির্ভর করে। কলারদের দিক থেকে (অর্থাৎ, সংযোগ শুরুকারী সহকর্মী), সংযোগ স্থাপনের প্রক্রিয়াটি সাধারণত নিম্নলিখিতভাবে হয়:

  1. উপযুক্ত ICE কনফিগারেশন ব্যবহার করে একটি নতুন RTCPeerConnection ইনস্ট্যান্স তৈরি করুন।
  2. RTCPeerConnection.createOffer() ব্যবহার করে একটি স্থানীয় SDP বিবরণ তৈরি করুন।
  3. RTCPeerConnection.setLocalDescription() ব্যবহার করে স্থানীয় SDP বিবরণ সেট করুন।
  4. স্থানীয় SDP বিবরণ (একটি সিগন্যালিং পরিষেবা ব্যবহার করে) দূরবর্তী পিয়ারের কাছে স্থানান্তর করুন।
  5. RTCPeerConnectionicecandidate ইভেন্টের জন্য একজন শ্রোতা নিবন্ধন করুন।
  6. প্রতিটি icecandidate ইভেন্টের জন্য, এটি (একটি সিগন্যালিং পরিষেবা ব্যবহার করে) দূরবর্তী পিয়ারে স্থানান্তর করুন।
  7. সিগন্যালিং পরিষেবা থেকে একটি আগত রিমোট SDP বর্ণনার জন্য অপেক্ষা করুন এবং RTCPeerConnection.setRemoteDescription() ব্যবহার করে এটি সেট করুন।
  8. সিগন্যালিং পরিষেবা থেকে আগত দূরবর্তী ICE প্রার্থীদের জন্য অপেক্ষা করুন এবং RTCPeerConnection.addIceCandidate() ব্যবহার করে তাদের যোগ করুন।

কলির দিক থেকে, প্রক্রিয়াটি একটু ভিন্ন।

  1. উপযুক্ত ICE কনফিগারেশন ব্যবহার করে একটি নতুন RTCPeerConnection ইনস্ট্যান্স তৈরি করুন।
  2. সিগন্যালিং পরিষেবা থেকে একটি আগত রিমোট SDP বর্ণনার জন্য অপেক্ষা করুন এবং RTCPeerConnection.setRemoteDescription() ব্যবহার করে এটি সেট করুন।
  3. RTCPeerConnection.createAnswer() কল করে রিমোট SDP বর্ণনার জন্য একটি উত্তর তৈরি করুন।
  4. রিমোট পিয়ারের কাছে উত্তরটি (সিগন্যালিং পরিষেবা ব্যবহার করে) স্থানান্তর করুন।
  5. RTCPeerConnectionicecandidate ইভেন্টের জন্য একজন শ্রোতা নিবন্ধন করুন।
  6. প্রতিটি icecandidate ইভেন্টের জন্য, এটি (একটি সিগন্যালিং পরিষেবা ব্যবহার করে) দূরবর্তী পিয়ারে স্থানান্তর করুন।
  7. সিগন্যালিং পরিষেবা থেকে আগত দূরবর্তী ICE প্রার্থীদের জন্য অপেক্ষা করুন এবং RTCPeerConnection.addIceCandidate() ব্যবহার করে তাদের যোগ করুন।

এই API-এর চ্যালেঞ্জ হল এই অপারেশনগুলির বেশিরভাগই অ্যাসিঙ্ক্রোনাস, যা প্রায়শই একটি WebRTC অ্যাপ্লিকেশনের প্রকৃত বাস্তবায়নকে জটিল করে তোলে। অনেক ফাংশন একটি Promise প্রদান করে যা পরবর্তী ধাপে এগিয়ে যাওয়ার আগে সমাধান করতে হয়।

এই API ব্যবহার করে কোনও অ্যাপ্লিকেশন বাস্তবায়নের সময়, ডেভেলপারকে শ্রোতাদের নিবন্ধন করার পরিবর্তে ( Promise.then() ব্যবহার করে) async এবং await ব্যবহার করার পরামর্শ দেওয়া হচ্ছে, কারণ এটি আপনার কোড অনুসরণ করা আরও সহজ করে তোলে। নিম্নলিখিত উদাহরণটি বিবেচনা করুন:

function createAndSendOffer(peerConnection, signallingService) {
    peerConnection.createOffer()
                  .then(offer => {
                      signallingService.send({
                          type: 'offer',
                          data: offer
                      });
                  });
}

উপরের কোডটি async এবং await ব্যবহার করে লেখার সময়, আমরা নিম্নলিখিতটি পাই:

async function createAndSendOffer(peerConnection, signallingService) {
    const offer = await peerConnection.createOffer();
    signallingService.send({
        type: 'offer',
        data: offer
    });
}