یکی از اصطلاحات جدید در دنیای اینرنت و به خصوص وباپلیکیشنهای ارتباطی مثل چت یا تماس ویدیویی WebRTC است. اما WebRTC چیست و چه کاربردهایی دارد و چرا مرورگر باید به خوبی از آن پشتیبانی کند؟ در ادامه خواهیم دید.
WebRTC برای ایجاد تحول معرفی شده
دنیای امروز ما با اینترنتی عجین شده که همان اینترنت سادهی 10 سال پیش نیست. ارتباطاتی که در حال حاضر میتوان از طریق اینترنت برقرار کرد، فقط ایمیلهای سادهی دیروز نیست. حتی ایمیل هم آمیخته به سرویسهای ابری قدرتمند شده ولیکن از همه مهمتر ارتباطاتی است که سالها پیش به پلاگینها و اپلیکیشنهای خاص نیاز داشت و مشکلات زیادی هم در راهکارهای آن روز به چشم میخورد. ارتباطات ویدیویی و صوتی این روزها بسیار ساده شده و WebRTC هم یکی از مقولات جدیدی است که به این سادگی و در عین حال توانمندی کمک زیادی کرده است.
WebRTC به توسعهدهندگانی که به دنبال ایجاد ارتباطات آنی هستند، استفاده از تکنولوژیهای متداول وب یعنی HTML5 ، جاوااسکریپت و CSS را پیشنهاد میکند. مثلاً بخش چت یک بازی مالتیپلیر آنلاین یا یک سایت ساده برای ویدیوکنفرانس را در نظر بگیرید، WebRTC ارتباطات آنی این اپلیکیشنها را ساده میکند.
WebRTC چه تواناییهایی دارد؟
WebRTC واسط برنامهنویسی یا همان API است، اما نه به شکل یک محصول خاص یا یک واسط برنامهنویسی ویژه؛ در واقع WebRTC شامل گروهی از APIها برای تکمیل بخشهای مختلف یک اپلیکیشن یا ارتباط تحت وب است و هر بخش هم به شکلهای مختلفی در مرورگرها پشتیبانی میشود.
برخی از واسطهای برنامهنوسی (API) در WebRTC مسئول دسترسی به وبکم و میکروفون یک کامپیوتر هستند و برخی دیگر وظایف محیرالعقول دیگری را انجام میدهند. مثلاً API خاصی برای به اشتراکگذاری صفحه با مخاطبین وجود دارد، منظورم از صفحه همان دستاپ یا نرمافزارهای اجرا شدهای است که روی دستاپ نمایش داده میشوند. حتی برای مخابره کردن ویدیو آن هم با کیفیتها و بیتریتهای مختلف هم API خاصی وجود دارد. یکی دیگر از APIهای WebRTC که نام آن MediaStream API است، به توسعهدهنده اجازه میدهد که صدا را سریع پردازش کند، قطع یا متوقف کند و همینطور صداهای دیگری را اضافه کند.
بنابراین WebRTC یکی از کاربردیترین تکنولوژیهای وب است و توانمندیهای بسیاری دارد؛ ویژگی مشترک کاربردهای WebRTC همان ارتباط آنی یا Realtime است.
کاربردهای WebRTC
شاید معروفترین کاربرد WebRTC همان ویدیوکنفرانس و چت ویدیویی باشد. اگر یادتان باشد مرورگر فایرفاکس هم با استفاده از WebRTC امکان چت ویدیویی آن هم بدون هیچ حساب کاربری را فراهم کرده بود. منظورم سرویس Hello است که برای ورود به حساب کاربری در ویندوز ۱۰ طراحی شده است.
همین نوع ارتباط از طریق وبسایت appear.in هم برقرار میشود. حساب کاربری، لاگین کردن و حتی نصب پلاگین روی مرورگر هم لازم نیست.
سرویس Hello موزیلا و سایتی که ذکر شد تنها دو نمونه از کاربردهای WebRTC برای تماس ویدیویی است و این روزها سرویسهای مشابه زیادی میبینیم. حتی Skype هم با نسخهی خاصی به اسم Skype for Web از توانمندی WebRTC بهره گرفته تا چت ویدیویی را سادهتر کند.
در بازیهای آنلاین هم میتوان از WebRTC بهره گرفت. بازی The Hobbit: The Battle for Five Armies یکی از نمونههای این کاربرد است و قبل از معرفی نسخهی نهایی که به صورت نصبی است، توجه گیمرها را به خود جلب میکند.
گرافیک این بازی توسط API معروف WebGL مهیا شده و کاربر میتواند به عنوان یک انسان، ارک، الف یا دوآرف مشغول رقابت با دیگر پلیرها شود.
پشتیبانی از WebRTC توسط مرورگرهای مختلف
طبق معمول مرورگر پیشرفتهی گوگل کروم و موزیلا فایرفاکس بهترین پشتیبانی را به عمل میآورند ولیکن این دو مورد هم کمی ناقص به نظر میرسند. مثلاً فایرفاکس از Simulcast که امکان مخابره کردن ویدیو با کیفیتهای مختلف را فراهم میکند، پشتیبانی نمیکند و گوگل کروم هم از استریم ویدیوهای فشرده شده طبق استاندارد H.264 پشتیبانی نمیکند. مرورگر Opera هم با توجه به استفاده از موتور رندرینگ گوگل کروم، وضعیت خوبی دارد اما نه به کاملی گوگلی کروم. مثلا Screen Sharing یا همان به اشتراک گذاری صفحه در آن غایب است!
به لیست کامل پشتیبانیها توجه فرمایید، متأسفانه اینترنت اکسپلورر مایکروسافت و سافاری اپل در پشتیبانی از APIهای WebRTC بسیار ضعیف یا دقیقتر بگوییم کاملاً ناتوان هستند.
خبر ناگوار این است که مایکروسافت و اپل هیچ اشارهای به پشتیبانی از WebRTC در آینده نکردهاند و تنها امیدی که وجود دارد، استفاده از ابزارهای جانبی برای اضافه کردن قابلیتهای WebRTC به این مرورگرهاست. مثلاً افزونهی temasys که این وظیفهی مهم را به صورت رایگان برعهده میگیرد و البته یک اشکال مهم دارد، پشتیبانی نکردن از تمام سایتها و سرویسها.
آیا WebRTC امن است؟
ادوبی فلش یکی از آن روشهای کهن برقراری ارتباط از طریق مرورگر بود و به دلایل مختلف که یکی از مهمترینها موضوع امنیت است، تقریباً کنار گذاشته شده است. تکنولوژی Flash پر از حفرههای امنیتی است و هکرها به آن علاقهی وافری دارند. البته راه حلی که استیو جابز پیشنهاد کرده یعنی استفاده نکردن از ادوبی فلش هم راه حل جالبی نیست چرا که این روزها مرورگر گوگل کروم به عنوان یک مرورگر امن، از فلش به صورت دیگری پشتیبانی میکند و در حقیقت فلش را در محیط سطل شن (اصطلاحی امنیتی به معنی اجرای اپلیکیشن در محیط حفاظت شده) اجرا مینماید.
WebRTC یک API خاص نیست، گروهی از APIهاست و به همین علت است که امنیت آن به مراتب بالاتر از فلش است. قطعاً WebRTC هم گرفتار مشکلات امنیتی میشود اما عمق فاجعه بسیار کمتر از مشکلاتی است که فلش به دنبال داشته است.
سال پیش بود که یکی از اشکالات WebRTC کشف شد: با نوشتن چند خط کد جاوااسکریپت و استفاده از بخشی از WebRTC میتوان آدرس اینترنتی یا همان IP کاربر VPN را کشف کرد!
هنوز هم دردی برای دوای این مشکل امنیتی پیشنهاد نشده! البته میتوان با افزونهی Disable WebRTC فایرفاکس یا Stop WebRTC کروم، WebRTC را به کلی متوقف کرد. راه دیگر هم ممانعت از اجرای کدهای جاوااسکریپ در مرورگر است. اما هیچ راه حلی که به معنی استفاده نکردن از WebRTC باشد، معرفی نشده است.
سخن آخر؛ آیندهی WebRTC چگونه خواهد بود؟
WebRTC یکی از مهمترین بخشهای HTML5 است که میتواند شیوهی استفاده از اینترنت و وباپلیکیشنها را متحول کند. سادگی استفاده و قابلیتهای بیشتر چیزی است که این روزها نسبت به 10 سال پیش شاهد هستیم و شاید 10 سال بعد هم وضعیت با امروز ما قابل قیاس نباشد.
اما تمام کاربردها و تحولات به این بستگی دارد که W3C مایکروسافت و اپل را متقاعد کند و این کمپانیها هم تا زمانی که خیالشان از جانب امنیت و اجرای بینقص روی مرورگرهای دیگر راحت نباشد، از WebRTC پشتیبانی نمیکنند.
حقیقت دیگری که نباید نادیده گرفت، رقابتی است که همیشه بین اپل و مایکروسافت با دیگران وجود داشته و دارد. مایکروسافت زمانی Silverlight را معرفی کرد تا شاید فلش را کنار بزند اما این رویا به حقیقت بدل نشد. اپل هم معمولاً به نرمافزارها و امکانات بومی و البته انحصاری علاقه دارد و به این راحتیها با تکنولوژیهای رایگان و عمومی کنار نمیآید.
اینتوتک
طبق تستی که کردم بین انواع ابزارهای موجود فقط ابزار سیسکو یعنی any connect با موفقیت تونست مانع آشکار شدن آی پی توسط webRtc بشه!