یکی از اصطلاحات جدید در دنیای اینرنت و به خصوص وباپلیکیشنهای ارتباطی مثل چت یا تماس ویدیویی WebRTC است.
اما WebRTC چیست و چه کاربردهایی دارد؟
ابتدا باید بدانیم WebRTC مخفف Web Real-Time Communication میباشد. در واقع امکانی است که ارتباطات آنی از طریق مرورگرهای وب را بدون نیاز به اپلیکیشن ها و پلاگین ها فراهم می سازد.به بیان ساده تر WebRTC قابلیتی است که برقراری ارتباطات صوتی و تصویری و کنفرانس ها را به صورت آنی از طریق مرورگرها امکانپذیر می کند.
WebRTC واسط برنامهنویسی یا همان API است، اما نه به شکل یک محصول خاص یا یک واسط برنامهنویسی ویژه. در واقع WebRTC شامل گروهی از APIها برای تکمیل بخشهای مختلف یک اپلیکیشن یا ارتباط تحت وب است و هر بخش هم به شکلهای مختلفی در مرورگرها پشتیبانی میشود..
برخی از واسطهای برنامهنوسی (API) در WebRTC مسئول دسترسی به وبکم و میکروفون یک کامپیوتر هستند و برخی هم وظایف دیگری را انجام میدهند. مثلاً API خاصی برای به اشتراکگذاری صفحه با مخاطبین وجود دارد. حتی برای مخابره کردن ویدیو آن هم با کیفیتها و بیتریتهای مختلف هم API خاصی وجود دارد. یکی دیگر از APIهای WebRTC که نام آن MediaStream API است، به توسعهدهنده اجازه میدهد که صدا را سریع پردازش کند، قطع یا متوقف کند و همینطور صداهای دیگری را اضافه کند.
کاربردهای WebRTC
شاید معروفترین کاربرد آن همان ویدیوکنفرانس و چت ویدیویی باشد. اگر یادتان باشد مرورگر فایرفاکس هم با استفاده از WebRTC امکان چت ویدیویی آن هم بدون هیچ حساب کاربری را فراهم کرده بود. منظورم سرویس Hello است.همین نوع ارتباط از طریق وبسایت appear.in هم برقرار میشود. حساب کاربری، لاگین کردن و حتی نصب پلاگین روی مرورگر هم لازم نیست.
سرویس Hello موزیلا و سایتی که ذکر شد تنها دو نمونه از کاربردهای WebRTC برای تماس ویدیویی است و این روزها سرویسهای مشابه زیادی میبینیم. حتی Skype هم با نسخهی خاصی به اسم Skype for Web از توانمندی WebRTC بهره گرفته تا چت ویدیویی را سادهتر کند.
در بازیهای آنلاین هم میتوان از WebRTC بهره گرفت. بازی The Hobbit: The Battle for Five Armies یکی از نمونههای این کاربرد است و قبل از معرفی نسخهی نهایی که به صورت نصبی است، توجه گیمرها را به خود جلب میکند.
پشتیبانی از WebRTC توسط مرورگرهای مختلف
مرورگر پیشرفتهی گوگل کروم و موزیلا فایرفاکس بهترین پشتیبانی را به عمل میآورند،ولی نواقصی دارند.مثلاً فایرفاکس از Simulcast که امکان مخابره کردن ویدیو با کیفیتهای مختلف را فراهم میکند، پشتیبانی نمیکند. گوگل کروم هم از استریم ویدیوهای فشرده شده طبق استاندارد H.264 پشتیبانی نمیکند. مرورگر Opera هم با توجه به استفاده از موتور رندرینگ گوگل کروم، وضعیت خوبی دارد اما نه به کاملی گوگلی کروم. مثلا Screen Sharing یا همان به اشتراک گذاری صفحه در آن غایب است.
WebRTC چگونه کار میکند؟
در ارتباط معمول HTTP، کلاینت با سرور ارتباط برقرار میکند. یعنی کلاینت درخواستی به سرور میدهد و سرور به آن درخواستِ مشخص، پاسخ میدهد. حال اگر از ارتباط WebSocket استفاده شود، این ارتباط پایدار میماند. سرور نیز میتواند بدون اینکه از کلاینت درخواستی بگیرد، او را از وضعیتی مطلع کرده یا اطلاعاتی را به او برساند.
اکنون حالتی را تصور کنید که یکی از کلاینتها توسط درخواستی که به سرور میدهد، باعث تغییراتی میشود. (مثلاً به سرور درخواست میدهد دادهای را در پایگاه داده وارد کند) سرورنیز تصمیم دارد این تغییرات را از طریق WebSocket به اطلاع سایر کلاینتها برساند. در این حالت کلاینتها با تأخیر این تغییرات را دریافت میکنند. در بسیاری از برنامههایهای کاربردی، این تأخیر، اختلالی به وجود نمیآورد. ولی در برخی برنامهها که هدف ارتباط زنده، مانند ارتباط صوتیتصویری است، کوچکترین تأخیر، موجب اختلال در انجام عملیات میگردد.
ولی در WebRTC، کلاینتها بهصورت مستقیم با یکدیگر ارتباط برقرار میکنند و سرور را از معادله حذف میکنند. این امر موجب میشود تأخیر تا حد ممکن پایین بیاید.درنتیجه کلاینتی که میخواهند با یکدیگر ارتباط برقرار کنند، منتظر پاسخی از سرور نمی مانند.
در پشت صحنهی WebRTC چه میگذرد؟
میتوان گفت WebRTC از پروتکل UDP استفاده میکند. این پروتکل برخلاف TCP برای انتقال دادههای حساس مناسب نیست. زیرا چک نمیکند که بستههای داده به دست دریافتکننده رسیده است یا نه. ولی مزیت آن در سرعت انتقال داده است. درنتیجه میتوان گفت UDP پروتکل مناسبی برای مثلاً تماس ویدیویی و صوتی است. بهعنوان مثال، در استریم ویدیویی (مثلاً هنگام تماشای یوتوب)، چنانچه چند فریم از ویدیو منتقل نشود، اتفاق فاجعهآمیزی نمیافتد. ولی فرض کنید چند بایت از یک فایل منتقل نشود؛ کل فایل ممکن است غیرقابل استفاده باشد.
WebRTC چه مزیتهایی دارد؟
در زیر مهمترین ویژگیهای WebRTC آورده شده است:
- انتقال داده از WebRTC از طریق پروتکل UDP است و این پروتکل کمترین میزان تأخیر در انتقال بستهها را دارد.
- استفاده از WebRTC نیاز به پلاگین یا برنامهی جانبی ندارد و امروزه توسط اکثر مرورگرهای استاندارد، پشتیبانی میشود.
- ا WebRTC، تنها در کانال امن قابل استفاده است. استفاده از Encryption در WebRTC اجباری است و از آنجایی که وابسته به پلاگین و یا برنامهی جانبیای نیست ،در نتیجه برنامههای مخرب از طریق آن وارد سیستم کاربران نمیشود.
- دسترسی میکروفون و دوربین از طریق مرورگر و بهصورت دستی از کاربران گرفته میشود.همینطور امکان اینکه تصویر یا صدای کاربر بدون اجازه انتقال پیدا کند، وجود ندارد.
نویسنده:صدف امینی نیا
- PBN یا شبکه خصوصی لینک سازی
- Vue Js vs. React Js and flutter