WebRTC فناوری ارتباط همزمان در وب است که تماس صوتی، تماس تصویری و تبادل داده را میان مرورگرها ممکن میکند. کاربر برای استفاده از این قابلیتها به نصب افزونه یا نرمافزار جانبی نیاز ندارد. مرورگرها هنگام وجود مسیر مناسب، داده را مستقیم رد و بدل میکنند. در شبکههای محدود، ممکن است از سرور واسطه کمک بگیرند و خرید سرور ابری، زیرساخت لازم را برای راهاندازی سرورهای واسطه فراهم میکند. در ادامه، تعریف، عملکرد و پروتکلهای این فناوری را توضیح میدهیم و کاربردها، کتابخانهها، مزایا و تفاوت آن با WebSocket را بررسی میکنیم.
WebRTC چیست؟
نام WebRTC کوتاهشدهی عبارت «Web Real-Time Communication» و به معنای «ارتباط بلادرنگ در وب» است. این فناوری به مجموعهای از رابطهای برنامهنویسی و پروتکلها گفته میشود که انتقال صدا، تصویر و داده را بین دو طرف ارتباط فراهم میکند. هدف آن، برقراری ارتباطی مانند گفتوگوی زنده است که دریافت بهموقع صدا و تصویر در آن اهمیت دارد.
برنامهنویس برای ساخت ارتباط WebRTC از APIهای مرورگر استفاده میکند. برای درک بهتر مفهوم رابط برنامهنویسی کاربردی، مقالهی API چیست را مطالعه کنید. برای روشن شدن اینکه این رابطها چگونه کار میکنند، درخواست دسترسی به دوربین را در نظر بگیرید: برنامه تابع getUserMedia() را فراخوانی میکند و مرورگر پس از دریافت اجازهی کاربر، تصویر دوربین را در اختیار برنامه میگذارد. رابطهای دیگر هم امکاناتی مانند مدیریت اتصال و ارسال داده را فراهم میکنند.
در مقایسه با راهکارهای قدیمی مبتنیبر افزونه، کاربر تماس را داخل همان صفحهی وب آغاز میکند. برنامههای موبایل و دسکتاپ هم میتوانند WebRTC را پیاده کنند.
مراحل عملکرد WebRTC
دو همتا (Peer) برای برقراری ارتباط باید دربارهی نوع داده و مسیر انتقال آن هماهنگ شوند. هر همتا یکی از طرفهای اتصال است. مراحل اصلی عبارتاند از:
۱. دریافت صدا و تصویر
برنامه با رابط getUserMedia() از مرورگر درخواست دسترسی به دوربین و میکروفون میکند. کاربر باید اجازهی این دسترسی را بدهد. در ارتباطی که فقط داده منتقل میکند، این مرحله ضرورت ندارد.
۲. ساخت اتصال
برنامه یک شی RTCPeerConnection ایجاد میکند. این رابط، مدیریت ارتباط با طرف مقابل، مذاکره دربارهی رسانه و وضعیت اتصال را برعهده دارد.
۳. تبادل پیشنهاد و پاسخ
همتای آغازکننده، پیشنهاد ارتباط (Offer) را میسازد. طرف مقابل هم پاسخ (Answer) میدهد. این پیامها قابلیتهای ارتباطی دو طرف را مشخص و از کانال سیگنالینگ (Signaling) عبور میکنند.
۴. پیدا کردن مسیر ارتباط
همتاها نشانیها و مسیرهای احتمالی اتصال را جمعآوری و مبادله میکنند. سازوکار ICE این گزینهها را بررسی میکند تا یک مسیر مناسب و کاربردی پیدا کند.
۵. آغاز انتقال امن
پس از آماده شدن مسیر و انجام مراحل امنیتی، انتقال صوت، تصویر یا داده شروع میشود. مسیر میتواند مستقیم باشد یا از سرور TURN عبور کند.
WebRTC روش مشخصی برای سیگنالینگ تحمیل نمیکند. توسعهدهنده میتواند این بخش را با WebSocket یا روشهای دیگر پیاده کند. جمعآوری مسیرها و تبادل اطلاعات هم میتوانند همزمان پیش بروند.
ساختار و پروتکلهای WebRTC
ساختار این فناوری شامل رابطهای برنامهنویسی و سازوکارهای برقراری ارتباط و امنیت شبکه میشود. برای ساخت یک تماس، توسعهدهنده اغلب با سه رابط سروکار دارد:
- دریافت رسانه: رابط getUserMedia از مجموعه امکانات Media Capture، صدا و تصویر دوربین و میکروفون را در اختیار برنامه میگذارد.
- مدیریت ارتباط: رابط RTCPeerConnection اتصال به همتای دیگر و ارسال و دریافت رسانه را مدیریت میکند.
- تبادل داده: رابط RTCDataChannel برای ارسال پیام متنی یا داده باینری میان دو همتا کاربرد دارد.
در شبکههایی با ترجمهی نشانی شبکه (NAT) یا محدودیتهای فایروال، اتصال مستقیم ممکن است دشوار باشد. سازوکارهای زیر به پیدا کردن مسیر کمک میکنند:
۱. ICE
چارچوب برقراری اتصال (Interactive Connectivity Establishment) مسیرهای احتمالی را جمعآوری میکند، ارتباط آنها را میآزماید و مسیر مناسب را انتخاب میکند.
۲. STUN
به دستگاه کمک میکند نشانی و پورتی را بشناسد که سرور STUN از آن میبیند. این اطلاعات برای بررسی امکان اتصال مستقیم کاربرد دارند. سرور STUN واسطهی انتقال صوت و تصویر نیست.
۳. TURN
یک مسیر واسطه برای عبور بستهها فراهم میکند. اگر محدودیت شبکه مانع اتصال مستقیم شود، همتاها میتوانند داده را از این مسیر بفرستند. عبور رسانه از TURN به پهنای باند سرور نیاز دارد.
SDP .۴
پروتکل توصیف نشست (SDP) قالبی متنی برای بیان مشخصات ارتباط است. در WebRTC، پیشنهاد و پاسخ شامل اطلاعاتی مانند نوع رسانه، کدکها و پارامترهای اتصال هستند. SDP خودش صدا یا تصویر را منتقل نمیکند.
SCTP .۵
کانال داده (Data Channel) برای تبادل اطلاعاتی مانند پیام چت، فایل یا فرمان کنترلی کاربرد دارد. پروتکل SCTP انتقال این پیامها را مدیریت میکند و روی DTLS قرار میگیرد. توسعهدهنده میتواند تحویل پیامها را با ترتیب مشخص یا بدون الزام به ترتیب تنظیم کند.
برای ارسال فایل، رسیدن کامل داده اهمیت دارد. برای دادههای لحظهای، مانند موقعیت بازیکن، برنامه میتواند ارسال مجدد پیام قدیمی را محدود کند.
کاربردهای WebRTC
کاربردهای WebRTC به تماس دونفره محدود نمیشوند. این فناوری برای دریافت سریع صدا، تصویر یا داده در سناریوهای زیر کاربرد دارد:
۱. تماس صوتی و تصویری
سایت میتواند امکان تماس را داخل مرورگر فراهم کند. برای نمونه، کاربر با کلیک روی دکمهی تماس، با پشتیبان گفتوگو میکند و نیازی به جابهجایی میان برنامهها ندارد.
۲. چت تصویری و ارسال فایل
برنامه میتواند در کنار تصویر زنده، کانال داده هم داشته باشد. کاربران از این کانال پیام یا فایل میفرستند. برنامه باید تقسیم فایلهای بزرگ و مدیریت حجم ارسال را هم پیاده کند.
۳. استریم زنده
پخش زنده (Live Streaming) همراه با تعامل سریع، از کاربردهای این فناوری است. در پخش برای مخاطبان زیاد، سرور رسانه و طراحی مناسب توزیع جریان اهمیت پیدا میکنند.
۴. سیستمهای کنفرانس ویدیویی
جلسهی گروهی، کلاس آنلاین و اشتراک صفحه را میتوان بر پایهی این فناوری ساخت. با افزایش شرکتکنندگان، اتصال مستقیم همهی افراد به یکدیگر، مصرف شبکه و پردازش را بالا میبرد. معماریهایی مانند SFU، جریانهای رسانه را از شرکتکنندگان دریافت و برای دیگران ارسال میکنند.
۵. کنترل از راه دور و اینترنت اشیا
ترکیب ویدیوی زنده و پیامهای کنترلی برای مشاهده و هدایت دستگاه کاربرد دارد. برای مثال، کاربر تصویر یک وسیله متصل را میبیند و فرمان حرکت میفرستد. دستگاه مقصد یا درگاه آن نیز باید ارتباط سازگار را پیاده کند.
فریمورکها و کتابخانههای WebRTC
کتابخانهها مدیریت اتصال را ساده یا امکانات سرور رسانه را فراهم میکنند. هنگام انتخاب، قابلیتها، وضعیت نگهداری و نقش ابزار در پروژه را بررسی کنید.
۱. ترکیب Socket.IO و WebRTC
کتابخانهی Socket.IO برای ارتباط دوطرفهی کلاینت و سرور کاربرد دارد و میتواند سیگنالینگ را انجام دهد. انتقال رسانه را WebRTC انجام میدهد. Socket.IO به تنهایی کتابخانه تماس تصویری نیست.
۲. PeerJS
ساخت اتصال داده و تماس صوتی یا تصویری را سادهتر میکند. این کتابخانه برای تبادل اطلاعات نشست و مسیرهای اتصال از PeerServer کمک میگیرد.
۳. SimpleWebRTC
کتابخانهای برای سادهسازی ساخت ارتباط صوتی و تصویری بود. نسخهی متنباز آن اکنون منسوخ است و تیم پروژه دیگر آن را فعالانه نگهداری نمیکند. به همین دلیل، انتخاب مناسبی برای شروع پروژهی جدید نیست.
۴. Mediasoup
ابزار سمت سرور برای پیادهسازی معماری SFU است و در ساخت کنفرانس یا پخش زنده کاربرد دارد. این ابزار، جریان رسانه را مدیریت میکند و توسعهدهنده باید سیگنالینگ و منطق برنامه را جداگانه بسازد.
مزایای WebRTC
مزایای WebRTC هم برای کاربر و هم برای تیم توسعه اهمیت دارند. WebRTC امکان برقراری تماس صوتی و تصویری را بدون نصب افزونه یا نرمافزار جانبی در مرورگرهای سازگار فراهم میسازد. پشتیبانی مرورگرهای مدرن از این فناوری، پیادهسازی ارتباطات آنلاین را سادهتر میکند؛ البته باید سازگاری قابلیتهای موردنیاز را با مرورگرها و دستگاههای هدف بررسی کنید.
این فناوری با رمزنگاری رسانه و کانال داده، از امنیت انتقال اطلاعات محافظت میکند و برای ارتباط زنده طراحی شده است تا تاخیر را کاهش دهد. با این حال، کیفیت اینترنت، مسیر شبکه و استفاده از سرور واسطه بر سرعت و کیفیت ارتباط اثر میگذارند.
تفاوت WebRTC با WebSocket
هر دو فناوری در ارتباطات بلادرنگ کاربرد دارند، ولی نیازهای متفاوتی را پوشش میدهند. WebSocket یک کانال ارتباط دوطرفه میان کلاینت و سرور است. WebRTC امکانات تخصصی انتقال رسانه و ارتباط میان همتاها را هم فراهم میکند.
| معیار | WebRTC | WebSocket |
| مدل ارتباط | میان همتاها، مستقیم یا با واسطه | میان کلاینت و سرور |
| صوت و تصویر | امکانات آماده برای تماس و مدیریت رسانه | نیازمند پیادهسازی سازوکار رسانه در برنامه |
| انتقال داده | کانال داده با تنظیم ترتیب و قابلیت اطمینان | انتقال پیام روی اتصال TCP با تحویل مرتب و مطمین |
| کاربرد رایج | تماس آنلاین، کنفرانس و تبادل مستقیم داده | چت سرورمحور، اعلان و بهروزرسانی وضعیت |
| نقش در تماس | انتقال رسانه یا داده | امکان استفاده برای سیگنالینگ |
این دو میتوانند در یک پروژه کنار هم کار کنند. برای مثال WebSocket اطلاعات آغاز تماس را جابهجا کرده و WebRTC جریان صوت و تصویر را منتقل میکند.
چه زمانی از WebRTC استفاده کنیم؟
برای تماس آنلاین، کنفرانس ویدیویی و ارتباط مستقیم با تاخیر کم، WebRTC انتخاب مناسبی است. برای مثال در کلاس تعاملی، مدرس و دانشجو باید بدون مکث طولانی پاسخ یکدیگر را بدهند.
پیش از اجرا، تعداد کاربران همزمان و نیاز پروژه به سرور رسانه یا TURN را در نظر داشته باشید. اگر میخواهید این سرویسها را روی زیرساخت خودتان به اجرا درآورید، ظرفیت پردازش، پهنای باند و موقعیت سرور را متناسب با تعداد کاربران و محل اتصال آنها انتخاب کنید. بهویژه در اتصالهای واسطه، ترافیک صوت و تصویر از سرور عبور میکند و بر هزینهی زیرساخت اثر میگذارد.
برای دسترسی به دوربین و میکروفون در سایت واقعی، محیط امن HTTPS هم لازم است. اگر نیاز اصلی پروژه فقط ارسال اعلان یا تبادل پیام با سرور است، WebSocket اغلب راه سادهتری برای پیادهسازی فراهم میکند.
جمعبندی
WebRTC امکان تماس صوتی، تصویری و تبادل داده را در مرورگر فراهم میکند. سیگنالینگ اطلاعات اولیه را جابهجا کرده، ICE مسیر اتصال را پیدا میکند و STUN و TURN به برقراری ارتباط در شبکههای مختلف کمک میکنند. SDP مشخصات نشست را توصیف میکند و SCTP انتقال پیامهای کانال داده را برعهده دارد. این فناوری برای تماس آنلاین، کلاس تعاملی و کنفرانس مناسب است. کیفیت اجرا به معماری، زیرساخت و شرایط شبکهی کاربران بستگی دارد.






