وبلاگ

تکنولوژی وب‌آرتی‌سی (WebRTC) چیست و چگونه کار می‌‌‌‌‌کند؟


فاطمه رسولی فاطمه رسولی

وب‌آرتی‌سی (WebRTC) یک فریمورک اپن‌سورس است که کمک می‌کند صدا، ویدئو و دیتا را بدون پلاگین به صورت نظیربه‌نظیر انتقال دهید.

 

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

 

وب‌آرتی‌سی در سال 2011 در قالب فریمورکی اپن‌سورس توسعه یافته که شامل استانداردها، پروتکل‌ها و APIهای جاوااسکریپت می‌شود. وب‌آرتی‌سی مخفف Web Real-Time Communications به معنی ارتباطات بلادرنگ در وب است. وب‌آرتی‌سی، انتقال نظیربه‌نظیر صوت، ویدیو و دیتا را بدون نیاز به هیچ پلاگین، اپلیکیشن نیتیو و یا هرگونه نرم افزار به اصطلاح third-party است امکان‌پذیر می‌کند.

 

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

 

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

 

اما صبر کنید! به این راحتی هم نیست: این تکنولوژی از انواع پروتکل‌ها و استانداردها از جمله SDP و SIP و NAT و ICE و UDP/TCP و پروتکل‌های بسیار دیگری استفاده می‌کند تا بتواند امنیت، قابل تعامل (بین مرورگرها) و ارتباطات بلادرنگ نظیربه‌نظیر مبتنی بر مرورگر را ارائه دهد.

 

وب آر تی سی چگونه کارمی کند؟

 

در اولین نگاه ممکن است وب‌آرتی‌سی همانند هر تکونولوژی مخرب دیگری جالب و جادویی به نظر برسد. کارشناسان IT را می‌توان با وعده‌های ساخت برنامه بعدی Zoom جذب کرد تا دریابیم که ایده گرفتن از کامپوننت‌های متحرک متعدد پیچیده است و به این نتیجه برسیم که تمام اینها بخشی از یک پازل هستند که وب‌آرتی‌سی نام دارد.

 

با این حال، هنگامی که مفهوم اصلی را درک کردید، می‌توانید با موضوع ارتباط برقرار کنید. برای فعال کردن ارتباطات وب‌آرتی‌سی، چهار مرحله زیر مورد نیاز است :

 

مرحله1: دسترسی به استریم چندرسانه‌ای از طریق وبکم یا میکروفون (توسط متد GetUserMedia که مربوط به API استریم جاوااسکریپت است.)

 

مرحله 2: اطلاعات اساسی مربوط به شبکه مانند پورت‌ها و آدرس‌های IP و این اطلاعات باید از طریق سیگنال‌دهی با مرورگرهای دیگر به اشتراک گذاشته شوند (قابل انجام توسط متد RTCPeerConnection که توسط API جاوااسکریپت قابل دسترسی است.)

 

مرحله 3: اطلاعات در مورد پارامترهای دیتای چندرسانه‌ای (قابل انجام توسط RTCPeerConnection که توسط API جاوااسکریپت قابل دسترسی است.)

 

مرحله 4: انتقال دیتای چندرسانه‌ای (قابل انجام توسط RTCDataChannel که توسط API جاوااسکریپت قابل دسترسی است.)

 

به طور کلی، این اهداف با سه گروه اصلی جاوا اسکریپت محقق می‌شود:

1. GetUserMedia (یا MediaStream API)

این API برای دسترسی به وب کم یا میکروفون دستگاه مورد استفاده قرار می‌گیرد و توسعه‌دهندگان را قادر می‌سازد تا به آبجکت‌های استریم ویدئو/صدا دسترسی داشته باشند.

 

این API در انتخاب دستگاه ورودی مورد نظر از بین چندین دستگاه ضبط رسانه کمک می‌کند. خواه گرفتن عکس پروفایل یک کاربر باشد، یا جمع‌آوری نمونه‌های صوتی یا ضبط صدا/ویدئو، این API، وظیفه اجرای این تسک‌ها را برعهده می‌گیرد.

 

به عنوان مثال، برای باز کردن یک دستگاه چندرسانه‌ای پیش‌فرض، به روش زیر عمل می‌کند:

  • فراخوانی متد getUserMedia() فوراً درخواست مجوز را ایجاد می‌کند که برای دسترسی به MediaStream باید توسط کاربر پذیرفته شود.
  • در صورت رد مجوز، PermissionDeniedError رخ می‌دهد.
  • اگر هیچ دستگاه سازگاری پیدا نکرد، NotFoundError رخ می‌دهد.
WebRTC با استفاده از دوربین‌ها
WebRTC با استفاده از دوربین‌ها

2.RTCPeerConnection

این بخش پیچیده‌ترین و مهم‌ترین قسمت وب‌آرتی‌سی است و تمام وظایفی را که در ارتباطات نظیربه‌نظیر انجام می‌شود، انجام می‌دهد.

این وظایف عبارتند از:

  • راه اندازی و ایجادکانکشن نظیربه‌نظیر
  • مدیریت سشن
  • مدیریت کلیه مبادلات پیام پروتکل توصیف سشن (SDP) و هندل کردن مذاکرات از طریق کاندیدهای ICE ( در صورت لزوم از STUN و Turn استفاده می‌کند)
  • رمزگذاری و رمزگشایی همزمان جریان‌های رسانه‌ای (صوتی/تصویری/متنی)
  • رسیدگی به کلیه مسائل مربوط به شبکه مانند تخمین پهنای باند، از دست دادن بسته و غیره

 

پس از ایجاد کانکشن بین مرورگرها، می‌توان جریان‌های مولتی‌مدیا را به مرورگر راه دور ارسال کرد. گرچه، این کار به دلیل وجود سه سناریوی احتمالی زیر آسان به نظر نمی‌رسد:

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

 

درک صحیح علت به وجود آمدن این سناریوها در وهله اول مهم است. دلیل ساده آن این است که اینترنت مدت‌ها پیش از پارادایم سرور-کلاینت فراتر رفته است.

 

WebRTC به پیمایش NAT جهت می‌دهد

قبل از شروع ارتباط بین مرورگرها، به سه چیز نیاز دارد:

  • شناسایی کانکشن‌های نظیربه‌نظیر
  • تبادل توصیفات سشن برای راه اندازی پورت‌های رسانه و IPها
  • اطلاعات مربوط به دیتای رسانه‌ای که از طریق SDP (پروتکل توصیف سشن) منتقل می‌شود
  •  

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

 

اینجاست که نقش سرورهای STUN (Session Traversal Utilities for NAT) و TURN (Traversl Using Relays around NAT) نمایان می‌شود.

 

روند کار به این گونه است:

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

 

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

 

3. RTCDataChannel

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

 

جمع‌بندی

اهمیت وب آر تی سی در ارتباط نظیر به نظیر آشکار است، اما بهتر است عوامل متعددی مانند واحد کنفرانس چندگانه (MCU)، اجاره چندگانه (multitenancy)، یکپارچه‌سازی SIP هنگام ساختن یک راه‌حل برای تماس ویدیویی قابل اعتماد و قوی مورد توجه قرار گیرد. برای توسعه‌دهندگان، راه بهتری برای ایجاد راه حل تماس ویدیویی وجود دارد - آنها می‌توانند یک ارائه دهنده خدمات CPaaS را انتخاب کنند که تمام ویژگی‌ها، بلوک‌های سازنده و SDKها را برای ایجاد راه‌حل‌های تماس ویدیویی هیجان انگیز و مقیاس پذیر ارائه می‌دهد.



فاطمه رسولی
فاطمه رسولی

مطالب مرتبط

معرفی فیچرهای رایج اکما اسکریپت 6 (ES6)

برای بهره بردن از فیچرهای ES6 نیازی نیست که جاوا اسکریپت را خیلی حرفه‌ای بلد باشید. در این مقاله قصد داریم تا با 8 فیچر اکما اسکریپت 6 آشنا شویم.

6 قطعه کد جاوا اسکریپت برای حل مشکلات رایج

مانند بسیاری از زبان‌های برنامه نویسی، جاوا اسکریپت دارای نقص‌ها و علائم مربوط به آن است.

دیدگاه‌ها