🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ دیدگاه نظر سحر پاشائی
WebRTC چیست و چگونه کار می‌کند؟
سرفصل‌های مقاله
  • WebRTC چیه؟
  • WebRTC چطور کار می‌کنه؟
  • چرا پروتکل WebRTC رو انتخاب کنیم؟
  • چه زمانی از WebRTC استفاده کنیم؟
  • چه زمانی نباید از WebRTC استفاده کنیم؟
  • پروتکل‌ها و تکنولوژی‌های اصلی WebRTC
  • سوالات متداول
  • جمع‌بندی

احتمالاً الان توی خونت نشستی و داری این متن رو می‌خونی، در حالی که وسط هفته‌ست و همه‌ی ما مشغول کاریم. دنیای کارهای اداری دیگه مثل قدیم نیست، اما یه چیزی همیشه ثابت می‌مونه، و اونم جلساته. هممون مجبوریم وقت بذاریم برای جلسات کاری، بحثای طولانی برای پروژه‌های جدید، یا حتی یه جلسه‌ی آموزشی مهم دیگه. با داشتن یه وبکم خوب و یه هدفون، آماده‌ایم که بپریم توی جلسه!

بعد از کار، مثلاً مادر زن یا شوهر قراره آشپزخونه‌ی نوسازی‌شده‌شون رو بهت نشون بدن، اونم آنلاین! یا دوستای قدیمیت دارن با هم سریال می‌بینن و نوشیدنی می‌زنن، بازم آنلاین! خودت هم می‌خوای کلاس زبان فرانسوی بری تا برای سفرت به پاریس آماده بشی، اونم آنلاین برگزار می‌شه!

چند سال پیش اگه اینقدر وقت رو توی تماس‌های آنلاین می‌گذروندی، احتمالاً سرت گیج می‌رفت! تصویرای بی‌کیفیت، صدای بد که هی قطع و وصل می‌شد و تأخیرهایی که کلافت می‌کرد. بیشتر از 15 دقیقه توی ویدیو چت موندن، شجاعت زیادی می‌خواست!

بحران همیشه باعث نوآوری می‌شه. توی این چند سال، هممون به طور فشرده یاد گرفتیم چطوری دائم توی تماس‌های تصویری باشیم. اپلیکیشن‌های VoIP قدیمی هم دیگه جوابگوی این حجم از استفاده نبودن. خوشبختانه، یه پروتکل به نام WebRTC داشت کم‌کم معروف می‌شد و حالا وقتش رسیده بود که امتحانش رو پس بده.

WebRTC چیه؟

WebRTC کاملاً رایگان و متن‌بازه، و از انتقال صدا، تصویر و داده به‌صورت نظیر به نظیر (P2P) پشتیبانی می‌کنه. این پروتکل می‌تونه ارتباطات بلادرنگ (Real-Time Communication) رو از طریق مرورگرها و اپلیکیشن‌ها فراهم کنه. گستردگی این پروتکل روی تمام پلتفرم‌های اصلی باعث شده که برنامه‌نویسا راحت بتونن ازش توی راه‌حل‌های ارتباط صوتی و تصویری استفاده کنن.

اپلیکیشن‌های WebRTC هیچ نیازی به پلاگین‌ها یا نرم‌افزارهای جانبی ندارن. این تکنولوژی به راحتی می‌تونه توی هر وب‌سایتی به‌ صورت مستقیم استفاده بشه. WebRTC به‌صورت پیش‌فرض توی مرورگرهایی مثل گوگل کروم، موزیلا فایرفاکس، مایکروسافت اج، سافاری، اپرا و چندتا مرورگر محبوب دیگه اجرا می‌شه. و به لطف قابلیت‌های P2P، ساده‌ترین راه‌حل‌های مبتنی بر WebRTC می‌تونن به‌صورت مستقل و بدون نیاز به سرور اختصاصی کار کنن.

این پروتکل خیلی از اپلیکیشن‌های ارتباطی محبوب رو به کار انداخته، مثلاً وقتی داری از Discord، Zoom، Google Meet یا فیسبوک مسنجر استفاده می‌کنی، داری WebRTC رو در عمل می‌بینی.

WebRTC چطور کار می‌کنه؟

خب، حالا بریم ببینیم WebRTC API چطوری کار می‌کنه! این بخش یه مدل ذهنی بهت می‌ده که همه چیز چطوری به هم وصل می‌شه. البته نگران نباش، اگه هنوز با پروتکل یا API آشنایی نداری، این قسمت می‌تونه بعداً وقتی بیشتر یاد گرفتی برات جذاب باشه.

اگه دوست داری بیشتر بدونی پروتکل چیه و چطور کار می‌کنه، حتماً این مقاله رو در مورد پروتکل‌ها ببین.
یا اگه برات جالبه بدونی API دقیقاً چه داستانی داره، این مقاله درباره API رو از دست نده!

new RTCPeerConnection

اولین قدم اینه که یه "جلسه WebRTC" ایجاد کنیم. این کار رو با استفاده از RTCPeerConnection انجام می‌دیم که همه پروتکل‌های مربوط به WebRTC رو توی خودش داره. اما تا اینجای کار، هنوز اتفاق خاصی نیفتاده. فقط زیرسیستم‌ها آماده می‌شن.

addTrack

با addTrack می‌تونی یه استریم جدید RTP بسازی. وقتی این کار رو می‌کنی، یه شناسه تصادفی به نام SSRC (Synchronization Source) برای این استریم ساخته می‌شه. بعد، این استریم توی جلسه‌ای که با createOffer ساخته شده، قرار می‌گیره. هر بار که addTrack رو صدا بزنی، یه SSRC جدید و یه بخش رسانه‌ای جدید اضافه می‌شه.

به محض اینکه جلسه SRTP برقرار بشه، این بسته‌های رسانه‌ای به‌طور امن رمزگذاری می‌شن و از طریق ICE فرستاده می‌شن.

createDataChannel

اگه بخوای داده هم بین دو کاربر منتقل کنی، createDataChannel رو صدا می‌زنی. این کار یه استریم SCTP جدید می‌سازه (البته اگه SCTP از قبل وجود نداشته باشه). SCTP به‌طور پیش‌فرض فعال نیست و فقط وقتی شروع به کار می‌کنه که یه طرف درخواست یه کانال داده رو بده.

به محض اینکه جلسه DTLS برقرار بشه، استریم SCTP شروع می‌کنه به ارسال بسته‌های رمزگذاری‌شده از طریق ICE.

createOffer

وقتی createOffer رو صدا می‌زنی، یه "توضیحات جلسه" برای وضعیت فعلی محلی ساخته می‌شه که باید با کاربر مقابلت به اشتراک بذاری. اما نگران نباش، صدا زدن createOffer هیچ تغییر مستقیمی برای خودت ایجاد نمی‌کنه.

setLocalDescription

حالا اگه بخوای تغییراتی که درخواست کردی رو اعمال کنی، باید setLocalDescription رو صدا بزنی. وقتی addTrack یا createDataChannel رو صدا می‌زنی، این تغییرات موقتی هستن تا زمانی که setLocalDescription اجرا بشه. بعد از این، معمولاً باید پیشنهادت رو برای کاربر مقابل بفرستی تا اون هم ازش استفاده کنه و setRemoteDescription رو صدا بزنه.

setRemoteDescription

setRemoteDescription راهیه که اطلاعات کاربر مقابل راه دور رو به مرورگرت بگی. این مرحله همون فرآیند "سیگنالینگ" هست که با API جاوااسکریپت انجام می‌شه. وقتی setRemoteDescription از هر دو طرف صدا زده بشه، مرورگرها آماده هستن تا ارتباط نظیر به نظیر (P2P) رو شروع کنن!

addIceCandidate

اگه بخوای کاندیدای بیشتری به مرورگرت اضافه کنی، از addIceCandidate استفاده می‌کنی. این API کاندیدا رو مستقیماً وارد سیستم ICE می‌کنه و تأثیر دیگه‌ای روی کل ارتباط WebRTC نداره.

ontrack

وقتی یه بسته RTP از کاربر مقابل دریافت می‌کنی، ontrack یه callback هست که صدا زده می‌شه. این بسته‌های ورودی قبلاً توی توضیحات جلسه‌ای که به setRemoteDescription داده شده بود، مشخص شدن. WebRTC از SSRC استفاده می‌کنه تا استریم و ترک مربوطه رو پیدا کنه و این callback رو با اطلاعات پر شده صدا بزنه.

oniceconnectionstatechange

این یکی هم یه callback هست که وقتی وضعیت اتصال ICE عوض می‌شه، اجرا می‌شه. اگه تغییری توی اتصال شبکت رخ بده، اینجا ازش باخبر می‌شی.

onconnectionstatechange

این callback ترکیبی از وضعیت ICE و DTLS رو نشون می‌ده. اگه بخوای بفهمی که ICE و DTLS هر دو به‌ خوبی تموم شدن یا نه، باید اینو تماشا کنی تا موقعی که موفقیت‌آمیز باشه، مطلع بشی.

چرا پروتکل WebRTC رو انتخاب کنیم؟

WebRTC یکی از تکنولوژی‌های جدید و پرطرفدار در دنیای ارتباطات ریِل‌تایم هست. برنامه‌نویس‌ها از سراسر دنیا برای انواع مختلفی از کاربردها از این پروتکل استفاده می‌کنن. بیا ببینیم چرا WebRTC برای اپلیکیشن‌های ارتباطی بلادرنگ خیلی مهمه و چی کار می‌کنه:

  • حذف نیاز به تنظیمات دستی برای کنترل کیفیت: معمولاً وقتی وضعیت شبکه تغییر می‌کنه، تیم‌های IT باید به‌ صورت دستی کیفیت ارتباط و پهنای باند رو تنظیم کنن. WebRTC این کارو خودکار انجام می‌ده و به طور هوشمند کیفیت صدا و تصویر رو با پهنای باند موجود هماهنگ می‌کنه. دیگه دردسر تنظیمات دستی تمومه!
  • عبور از NAT: انتقال مدیا بین کاربران با استفاده از WebRTC خیلی ساده‌تره. با کمک سرورهای STUN، TURN و ICE که NAT traversal رو به‌طور خودکار انجام می‌دن، کاربرها می‌تونن به راحتی ارتباط برقرار کنن.
  • مخفی کردن از دست دادن بسته‌ها: WebRTC از تکنیک‌های پیشرفته‌ای استفاده می‌کنه که تا حد زیادی از دست دادن بسته‌های داده (packet loss) رو توی انتقال صدا و تصویر کاهش می‌ده. یعنی کیفیت بهتر در تماس‌های آنلاین.
  • امنیت قوی: WebRTC از رمزنگاری‌های داخلی استفاده می‌کنه که اطلاعات کاربران و شبکه‌های ارتباطی رو از هرگونه تهدید امنیتی محافظت می‌کنه. پس خیالت راحت که ارتباطاتت ایمنه.
  • مدیریت تأخیر (jitter buffering): برای بهبود تجربه صوتی و تصویری، WebRTC با تنظیمات هوشمندانه‌ای باعث می‌شه تأخیر در حداقل ممکن باشه و کیفیت ارتباط رو بالا نگه می‌داره.
  • تأخیر کمتر از یک ثانیه: WebRTC بهت کمک می‌کنه تا تأخیر ارتباطاتت همیشه کمتر از ۳ یا ۴ ثانیه باشه. این یعنی تقریباً بدون تأخیر تماس تصویری داشته باشی.
  • سازگاری با مرورگرها: WebRTC روی همه مرورگرهای معروف مثل کروم، فایرفاکس، سافاری و... کار می‌کنه و با هر سیستم‌عاملی سازگاره.
  • نیازی به پلاگین نداره: WebRTC متن‌بازه و نیازی به نصب پلاگین یا نرم‌افزارهای جانبی نداره. به راحتی می‌تونی توی هر اپلیکیشنی ازش استفاده کنی.
  • کنترل تراکم: یکی از ویژگی‌های مهم WebRTC اینه که می‌تونه تراکم شبکه رو مدیریت کنه و جلوی افت کیفیت یا قطع شدن ارتباط رو بگیره.
  • سازگاری با پهنای باند: حتی وقتی که اینترنت ضعیفه، WebRTC باز هم با پهنای باند هماهنگ می‌شه و بهترین کیفیت ممکن رو ارائه می‌ده.

چه زمانی از WebRTC استفاده کنیم؟

WebRTC برای خیلی از کاربردها به کار میاد، مثل:

  • برگزاری جلسات ویدئویی و تماس‌های تصویری در اپلیکیشن‌هایی مثل Zoom، Microsoft Teams و Google Meet.
  • اتصال بیمارها و پزشکان در اپلیکیشن‌های سلامت از راه دور.
  • ارتباط بین مرورگرها و دوربین‌های امنیتی در سیستم‌های نظارتی خانگی یا کسب‌وکاری.
  • پخش زنده ورزش‌ها، اخبار و رویدادهای دیگه به‌صورت بلادرنگ و با کیفیت بالا.
  • برگزاری کلاس‌های آنلاین و یادگیری از راه دور برای دانش‌آموزان و معلمان.

چه زمانی نباید از WebRTC استفاده کنیم؟

در حالی که WebRTC از رمزنگاری استفاده می‌کنه و APIهاش نیاز به HTTPS دارن، هنوز هم یه سری نگرانی‌های امنیتی هست که برنامه‌نویسا باید بهشون توجه کنن. برای WebRTC هیچ روش سیگنالینگ مشخصی تعریف نشده، یعنی اگه نمی‌دونی از چه پروتکل‌های امنیتی استفاده کنی، ممکنه بهتر باشه به یه پروتکل دیگه برای استریم ویدیو فکر کنی.

به غیر از امنیت، سه جنبه دیگه از WebRTC هست که باید قبل از تصمیم‌گیری بهشون توجه کنی:

  • پهنای باند: هر کاربر باید یه ارتباط P2P (نظیر به نظیر) برقرار کنه، که ممکنه روی پهنای باند اثر بذاره.
  • هزینه: نگهداری سرورها برای WebRTC می‌تونه گرون باشه.
  • استانداردهای خدمات: هیچ استاندارد دقیقی برای کیفیت خدمات توی WebRTC وجود نداره، به همین خاطر ممکنه کیفیت صدا و تصویر همیشه ثابت نباشه.

پروتکل‌ها و تکنولوژی‌های اصلی WebRTC

WebRTC به کمک مجموعه‌ای از پروتکل‌ها و سرورها مثل ICE، STUN، TURN و SDP کار می‌کنه تا ارتباطات بلادرنگ و پایدار بین دستگاه‌ها برقرار کنه. هر کدوم از این پروتکل‌ها نقش خاصی دارن و به مدیریت و تسهیل اتصال بین دستگاه‌ها کمک می‌کنن. حالا بیایم نگاهی به هرکدوم از این اجزا بندازیم و ببینیم چطور کار می‌کنن.

پروتکل ICE 

پروتکل ICE (Interactive Connectivity Establishment) برای پیدا کردن بهترین مسیر جهت اتصال بین دستگاه‌ها استفاده می‌شه. وقتی دستگاه‌ها پشت روترهای NAT یا فایروال قرار دارن و ارتباط برقرار نمی‌شه، ICE با کمک سرورهای STUN و TURN این موانع رو رد می‌کنه.

چطور کار می‌کنه؟

ICE همه مسیرهای ممکن رو برای انتقال مدیا بین دستگاه‌ها جمع می‌کنه. اول، با استفاده از سرورهای STUN تلاش می‌کنه تا آی‌پی دستگاه‌ها رو پیدا کنه و ارتباط مستقیم برقرار کنه. اگه موفق نشه، از سرور TURN به‌عنوان واسطه استفاده می‌کنه تا ارتباط بین دستگاه‌ها برقرار بشه.

اگه دنبال سرور TURN برای اپلیکیشن خودت هستی، می‌تونی از سرورهای Metered TURN که یه سرویس‌دهنده جهانیه استفاده کنی.

STUN

سرورهای STUN (Session Traversal Utilities for NAT) به دستگاه‌هایی که پشت روتر NAT هستن کمک می‌کنن تا آی‌پی عمومی و شماره پورت خودشون رو پیدا کنن. وقتی دستگاه‌ها پشت NAT هستن، یه آی‌پی خصوصی دارن که روتر NAT بهشون می‌ده. اما برای اینکه این دستگاه‌ها بتونن مستقیماً با هم ارتباط برقرار کنن، باید آی‌پی و پورت عمومی خودشون و طرف مقابل رو بدونن.

دستگاه‌ها یه درخواست به سرور STUN می‌فرستن و این سرور بهشون آی‌پی عمومی و پورت‌شون رو برمی‌گردونه تا بتونن به راحتی به هم وصل بشن. سرورهای STUN هم رایگان و هم پولی هستن؛ گوگل هم یه سری سرور STUN رایگان ارائه می‌ده که می‌تونی ازشون استفاده کنی.

NAT (Network Address Translation)

NAT یا ترجمه آدرس شبکه، یه روشه که توی اون دستگاه‌های NAT از یک یا چند آی‌پی عمومی برای هدایت ترافیک بین چندین دستگاهی که پشتش قرار دارن استفاده می‌کنن. این دستگاه‌ها آی‌پی و پورت خصوصی از NAT می‌گیرن. این روش برای صرفه‌جویی در تعداد محدود آدرس‌های IPv4 به وجود اومده.

TURN (Traversal Using Relays around NAT)

وقتی دستگاه‌ها نتونن به صورت مستقیم با هم ارتباط بگیرن (به‌خاطر NAT یا فایروال)، سرورهای TURN وارد عمل می‌شن و داده‌ها رو بین دستگاه‌ها جابجا می‌کنن. TURN آخرین راه‌حله و مصرف منابع بالایی مثل پهنای باند و پردازش داره. برای عملکرد بهتر، سرورهای TURN باید نزدیک کاربران قرار داشته باشن.

SDP (Session Description Protocol)

SDP یه استاندارده که برای توصیف جلسات ارتباطی چندرسانه‌ای (مثل ویدیو و صدا) استفاده می‌شه. هدفش اینه که اطلاعات مربوط به یه جلسه رو مثل اعلام جلسه، دعوت به جلسه یا شروع یه ارتباط چندرسانه‌ای، مشخص کنه.

البته خودش هیچ داده یا رسانه‌ای رو جابجا نمی‌کنه، فقط توصیف می‌کنه که چه نوع رسانه‌هایی در جلسه هست و دستگاه‌ها چطوری باید اون‌ها رو دریافت کنن.

هدف SDP

SDP طوری طراحی شده که توی محیط‌های شبکه مختلف و فرمت‌های متنوع کار کنه. ازش برای توصیف ارتباطات چندرسانه‌ای و مدیریت لاجستیک اتصال و تبادل مدیا استفاده می‌شه.

ساختار SDP

پیام‌های SDP با فرمت ساده و متن معمولی نوشته می‌شن. هر پیام شامل نوع=مقدار هست، که نوع یه کاراکتر ساده هست و مقدار یه رشته متنی ساختاریافته. این پیام‌ها معمولاً با پروتکل‌های دیگه مثل SIP یا به عنوان بخشی از فرآیند سیگنالینگ WebRTC منتقل می‌شن تا یه اتصال جدید برقرار شه.

اجزای کلیدی SDP

  • نسخه: نسخه SDP رو نشون می‌ده که استفاده می‌شه.
  • مبدأ: مشخص می‌کنه که کی جلسه رو شروع کرده و شناسه اون چیه.
  • نام جلسه: یه اسم ساده برای جلسه که برای انسان قابل فهم باشه.
  • زمان‌بندی: زمان شروع و پایان جلسه رو نشون می‌ده.
  • توضیحات رسانه‌ای: نوع رسانه‌ها مثل صدا، ویدیو و متن، پورت‌ها، پروتکل‌ها و فرمت‌های رسانه‌ای استفاده‌ شده رو توصیف می‌کنه.

SDP به طور خلاصه یه توصیف جامع از تمام جنبه‌های یه جلسه ارتباطی چندرسانه‌ایه که کمک می‌کنه دستگاه‌ها بدونن با چه مدیاهایی سر و کار دارن و چطور باید با هم وصل بشن.

نقش SDP در WebRTC

SDP توی WebRTC نقش مهمی در مدل "پیشنهاد/پاسخ" داره، که یکی از اصلی‌ترین مکانیزم‌های سیگنالینگ برای برقرار کردن ارتباط بین دو طرفه.

چطوری کار می‌کنه؟

  • پیشنهاد/پاسخ: یه کلاینت یه پیشنهاد SDP می‌فرسته که شامل توانایی‌های مدیاش هست، مثل کدک‌ها، نوع مدیا و نیازهای رمزنگاری. طرف مقابل با یه پاسخ جواب می‌ده.
  • مذاکره: کلاینت‌ها از طریق SDP توافق می‌کنن که چه کدک‌ها و نیازهای رمزنگاری مشترک رو برای ارتباط استفاده کنن.
  • کاندیداهای ICE: SDP اطلاعات مربوط به آدرس‌های STUN و TURN رو هم برای ارتباط فراهم می‌کنه و در طول فرآیند جمع‌آوری کاندیداهای ICE، به‌روزرسانی می‌شه تا مسیرهای ممکن برای اتصال مشخص بشه.

MediaStream

MediaStream API یکی از اجزای مهم WebRTC هست که برای مدیریت جریان‌های رسانه‌ای مثل صدا و تصویر به کار می‌ره. با این API می‌تونی ویدیو استریم، تماس‌های تصویری و صوتی رو راه بندازی.

MediaStream مجموعه‌ای از ترک‌های رسانه‌ای مثل صدا و تصویر رو به‌طور همزمان و هماهنگ مدیریت می‌کنه. این ترک‌ها می‌تونن از منابع مختلفی مثل میکروفون، دوربین یا حتی رسانه‌های از پیش ضبط‌شده گرفته بشن و بین دستگاه‌ها برای ارتباط بلادرنگ منتقل بشن.

ویژگی‌های اصلی MediaStream API

  • گرفتن استریم‌ها: از طریق تابع getUserMedia()، این API از کاربر اجازه می‌گیره تا به میکروفون و دوربین دسترسی داشته باشه و استریم‌های مربوطه رو دریافت می‌کنه.
  • مدیریت ترک‌ها: ترک‌های دریافت‌ شده مثل صدا و تصویر به‌طور جداگانه قابل مدیریت هستن؛ مثلاً می‌تونی صدای کاربر رو قطع کنی یا تصویرش رو غیرفعال کنی.
  • ترکیب و مدیریت استریم‌ها: وقتی چند تا MediaStream یا ترک‌های صوتی و تصویری داری، می‌تونی اونا رو به یه استریم واحد تبدیل کنی یا هر کدوم رو جداگانه مدیریت کنی. مثلاً توی یه تماس ویدیویی، می‌تونی ترک‌های مختلف رو بین استریم‌ها جابجا کنی یا به یه استریم دیگه اضافه کنی.
  • کلون کردن استریم: استریم‌ها رو می‌شه کلون کرد، یعنی یه کپی از استریم اصلی ساخت. این کار خیلی کاربردیه وقتی که نیاز داری یه استریم رو همزمان توی چند جا استفاده کنی، مثل نمایش برای چند کاربر یا ضبط برای آینده.
  • محدودیت‌ها و سازگاری: این API بهت اجازه می‌ده کیفیت تصویر یا صدا رو کم کنی، یا مثلاً نویز صدا رو بگیری تا استریم با دستگاه و اپلیکیشن‌های مختلف سازگارتر باشه.

موارد استفاده عملی از MediaStream API

  • کنفرانس ویدیویی: با MediaStream API می‌تونی تماس‌های تصویری برقرار کنی، استریم دوربین و صدا رو از چند نفر بگیری و به دیگران نمایش بدی.
  • ضبط رسانه: می‌تونی MediaStream رو با MediaRecorder API ترکیب کنی و استریم‌ها رو به صورت محلی تو مرورگر ضبط کنی، یا قابلیت‌هایی مثل ضبط جلسه داشته باشی.
  • پردازش بلادرنگ: می‌تونی استریم‌ها رو به‌ صورت زنده پردازش کنی، افکت اضافه کنی، رزولوشن رو تغییر بدی یا آنالیز انجام بدی.
  • پخش زنده: با WebRTC و MediaStream، می‌تونی رویدادها رو ضبط و به مخاطب گسترده‌تری تو اینترنت پخش کنی.

RTCPeerConnection

RTCPeerConnection یکی از اصلی‌ترین اجزای WebRTC هست. کار اصلیش اینه که همونطور که از اسمش پیداست، یه اتصال مستقیم بین دستگاه‌های کاربر برقرار و نگهداری کنه. این اتصال باعث می‌شه داده‌ها مستقیماً بین دستگاه‌ها رد و بدل بشه، بدون نیاز به واسطه (البته به جز توی مرحله اولیه سیگنالینگ).

RTCPeerConnection مسئول انجام کارهایی مثل مذاکره برای جزئیات اتصال و مدیریت انتقال مدیا و داده‌ها بعد از اینکه دستگاه‌ها به هم وصل شدن، هست.

ویژگی‌های مهم RTCPeerConnection

  • راه‌اندازی اتصال: RTCPeerConnection همه مذاکره‌های لازم برای برقراری ارتباط بین دو دستگاه رو مدیریت می‌کنه، مثل مدل پیشنهاد/پاسخ و کاندیداهای ICE.
  • سیگنالینگ: خود RTCPeerConnection کار سیگنالینگ رو انجام نمی‌ده، اما اطلاعات لازم مثل پیشنهاد/پاسخ و کاندیداهای ICE رو تولید می‌کنه تا توسط سرور سیگنالینگ ارسال بشه.
  • عبور از NAT: با استفاده از سرورهای ICE، STUN و TURN بهترین مسیر برای اتصال بین دستگاه‌ها رو پیدا می‌کنه.
  • مدیریت مدیا: بعد از برقراری ارتباط، RTCPeerConnection جریان‌های مدیا رو مدیریت می‌کنه.
  • راه‌اندازی کانال داده: از طریق RTCDataChannel می‌شه داده‌های مختلف رو بین دستگاه‌ها رد و بدل کرد.
  • رمزنگاری: تمام داده‌های منتقل‌شده توسط پروتکل DTLS رمزنگاری می‌شه تا امنیت ارتباط تضمین بشه.
  • مدیریت پهنای باند: RTCPeerConnection به‌طور خودکار مصرف پهنای باند رو مدیریت می‌کنه تا ارتباط بهینه باشه.

RTCDataChannel

RTCDataChannel یکی از بخش‌های مهم WebRTC هست که اجازه می‌ده داده‌ها به‌صورت دوطرفه بین دستگاه‌ها منتقل بشه. این قابلیت فراتر از تماس‌های صوتی و تصویریه و به برنامه‌نویس‌ها اجازه می‌ده اپلیکیشن‌هایی مثل چت، تخته‌های همکاری و حتی سرویس‌های اشتراک‌گذاری فایل بسازن.

این کانال داده بسیار انعطاف‌پذیره و هم انتقال داده‌های با اطمینان بالا و هم انتقال سریع با سربار کمتر رو پشتیبانی می‌کنه. به‌طور کلی، می‌تونی بسته به نیاز اپلیکیشنت تنظیماتش رو سفارشی کنی.

ویژگی‌های مهم RTCDataChannel

  • دوطرفه و همتا به همتا: RTCDataChannel اجازه می‌ده داده‌ها به‌صورت مستقیم و دوطرفه بین دستگاه‌ها منتقل بشه، فرقی هم نداره چه نوع داده‌ای باشه.
  • قابل تنظیم: دو حالت داره: حالت مطمئن که تضمین می‌کنه داده‌ها به ترتیب می‌رسن اما بار سنگینی داره، و حالت نامطمئن که سبک‌تره ولی تضمینی برای رسیدن داده‌ها نیست.
  • ادغام با RTCPeerConnection: از همون کانال‌های ارتباطی استفاده می‌کنه که مدیا استریم‌های WebRTC هم ازشون استفاده می‌کنن.
  • امنیت: داده‌ها به‌صورت کامل با پروتکل DTLS رمزنگاری می‌شن.
  • بار کم: به لطف استفاده از SCTP روی DTLS و UDP، همزمان تأخیر کم و قابلیت اطمینان بالا رو فراهم می‌کنه.

کاربردهای عملی برای RTCDataChannel

RTCDataChannel می‌تونه توی کلی اپلیکیشن مختلف به کار بره، مثل:

  • اپلیکیشن‌های چت: برای ارسال و دریافت پیام‌ها به‌صورت بلادرنگ.
  • ابزارهای همکاری: مثل وایت‌بورد‌های آنلاین که افراد همزمان روی یک پروژه کار می‌کنن.
  • اشتراک‌گذاری فایل: انتقال سریع فایل‌ها بین دستگاه‌ها.
  • بازی‌های آنلاین: برای همگام‌سازی داده‌ها در زمان بازی.

همچنین سرورهای TURN می‌تونن ترافیک رو به نزدیک‌ترین سرور هدایت کنن تا تأخیر به حداقل برسه (کمتر از 50 میلی‌ثانیه)، با قیمتی مقرون‌به‌صرفه و امکانات مدیریت ساده.

سوالات متداول

1. آیا WebRTC متعلق به گوگل است؟

نه، WebRTC متعلق به گوگل نیست، اما در سال 2011 توسط گوگل توسعه داده شد. این پروژه متن‌بازه و هر کسی می‌تونه ازش استفاده کنه.

2. WebRTC از TCP یا UDP استفاده می‌کنه؟

WebRTC از هر دو پروتکل TCP و UDP استفاده می‌کنه. TCP برای سیگنالینگ و UDP برای انتقال رسانه‌های بلادرنگ مثل صدا و تصویر استفاده می‌شه.

3. تفاوت WebRTC و WebSocket چیه؟

WebRTC برای ارتباطات بلادرنگ صدا و تصویر استفاده می‌شه، در حالی که WebSocket برای ارتباطات بین مرورگر و سرور طراحی شده.

4. WebRTC فقط برای مرورگرهاست؟

نه، WebRTC می‌تونه در اپلیکیشن‌ها و دستگاه‌های تعبیه‌ شده هم استفاده بشه، ولی برای اپ‌های iOS ممکنه نیاز به سفارشی‌سازی داشته باشه.

جمع‌بندی

در نهایت، WebRTC به‌عنوان یکی از پایه‌های اصلی ارتباطات بلادرنگ در اپلیکیشن‌های امروزی شناخته می‌شه. این تکنولوژی با سرعت فوق‌العاده‌ای که در انتقال صدا و تصویر داره، به بهترین گزینه برای توسعه‌دهندگانی تبدیل شده که قصد دارن اپ‌های تماس صوتی و تصویری سریع و کارآمد بسازن. با WebRTC، نه‌تنها تماس‌های ویدیویی روان‌تر می‌شن، بلکه توسعه این قابلیت‌ها هم خیلی راحت‌تر و سریع‌تر انجام می‌شه. برای هر پروژه‌ای که نیاز به تماس آنی داره، WebRTC یه راه‌حل بی‌نقصه.

امیدوارم این مقاله برات مفید بوده باشه، خوش‌حال می‌شم نظراتت رو با ما به اشتراک بذاری.😊

۰ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم

دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد:

۲۰۰ هزار تومان رایگان
دریافت دوره الفبای برنامه نویسی