WebRTC (مخفف ارتباطات بلادرنگ وب) فناوری است که به شما امکان می دهد داده های جریان صوتی و تصویری را بین مرورگرها و افزونه های موبایل منتقل کنید.
توسعه این فناوری باعث ایجاد رقابت برای اسکایپ می شود. WebRTC را می توان برای سازماندهی کنفرانس های ویدئویی بدون واسطه در مرورگر هک کرد. پروژه مشروط به تصویب کد خروجو به طور فعال توسط گوگل تبلیغ شده و توسط تیم توسعه مرورگر کرک شده است گوگل کروم.
مرورگرهای فناوری های اصلی فناوری WebRTC می توانند داده ها را بدون واسطه انتقال دهند. WebRTC به سرور okremiya نیاز ندارد که بتواند داده ها را ذخیره و جمع آوری کند. تمامی داده ها بدون واسطه توسط برادر و مکمل های موبایل انتهای خط پردازش می شوند.
فناوری WebRTC توسط همه محبوب پشتیبانی می شود مرورگرهای موزیلافایرفاکس، اپرا، گوگل کروم (و همه مرورگرهای مبتنی بر گوگل کروم)، و همچنین افزونه های موبایل مبتنی بر اندروید و iOS.
امنیت WebRTC
امنیت فناوری WebRTC بر آدرس IP واقعی اختصاص داده شده تأثیر می گذارد. پس چگونه می توانم بدون واسطه با یک کوریستوواچ، مرورگر، وب سایت یا دیگر ارتباط برقرار کنم مکمل موبایل، سپس تنظیمات ادغام نادیده گرفته می شوند. برای ایجاد تماسهای صوتی و تصویری، مرورگرها مسئول تبادل آدرسهای IP موجود و محلی هستند.
ناشناس سرویس VPNآیه با توجه به مشکلو آدرس های IP واقعی را دریافت کنید. حداکثر چیزی که می توان آشکار کرد کل آدرس IP محلی است که به شبکه VPN اختصاص داده شده است. ایمن نیست، زیرا همان آدرسهای IP محلی نشان داده میشود، گویی یک روتر برای توزیع در اینترنت دارید.
اگر یک پروکسی برنده شوید، WebRTC می تواند آدرس IP واقعی شما را به عنوان مقصد پروکسی یا آدرس IP سرور VPN نشان دهد، بنابراین می توانید یک VPN + پروکسی را برنده شوید.
WebRTC همچنین آدرس IP واقعی شما را هنگام استفاده از Tor به شما می گوید.
خود بهترین راه حل- فناوری WebRTC را روشن کنید تا کار نکند.
نحوه فعال کردن WebRTC در مرورگرها
ناوبری شویدکا در سمت چپ.
نحوه فعال کردن WebRTC در موزیلا فایرفاکس
مرورگر موزیلا فایرفاکس- تنها مرورگری که به شما امکان می دهد فناوری WebRTC را بدون نصب افزونه های اضافی فعال کنید.
تنظیم دستی
اگر فناوری WebRTC را برنده نشدید، می توانید آن را دوباره فعال کنید. در مواقعی، اگر نیاز به هک دوره ای WebRTC باشد، بهتر است.
برای فعال کردن فناوری WebRTC در موزیلا فایرفاکس، باید متن را در نوار آدرس مرورگر وارد کرده و دکمه Enter را فشار دهید.
درباره: پیکربندی
دکمه ریسک می کنم را فشار دهید.
قدم به جلو:
- در ردیف جستجو، متن را وارد کرده و Enter را فشار دهید. media.peerconnection.enabled
- مطبوعات دکمه سمت راستدر یک ردیف قرار می گیرد و Toggle را انتخاب کنید. یا این دو در یک ردیف کلیک کنید.
پس از این dіy WebRTC فعال خواهد شد.
سفارشی سازی از طریق پلاگین WebRTC Control
اگر از فناوری WebRTC استفاده می کنید، روشن و خاموش کردن آن از طریق تنظیمات زمان زیادی می برد. افزونهای را نصب کنید که به شما کمک میکند WebRTC را با 1 کلیک خرس تقلید کرده و از آن استفاده کنید.
Addenda را باز کنید.
بسته بندی کردن:
- پوشوک را توزیع کرد
- نام افزونه را در ردیف جستجو وارد کنید: کنترل WebRTC
- دکمه Insert را فشار دهید
نحوه فعال کردن WebRTC در مرورگر اپرا
برای فعال کردن WebRTC در مرورگر اپرابه پسوند گالری بروید
مراحل بعدی را بیابید:
- نام افزونه را وارد کنید در هر ردیف: کنترل WebRTC
- روی افزونه کلیک کنید
Add in Opera را فشار دهید.
افزونه را فعال کنید. نماد پلاگین برای مسدود کردن WebRTC آبی است.
نحوه فعال کردن WebRTC در گوگل کروم
برای فعال کردن WebRTC در مرورگر گوگل Chrome به بخش Extension بروید.
به پایین اسکرول کنید و روی سایر افزونه ها کلیک کنید.
مراحل بعدی را بیابید:
- یک رشته با نام افزونه در کادر جستجو وارد کنید: کنترل WebRTC
- روی دکمه Install کلیک کنید.
افزونه را فعال کنید. نماد پلاگین برای مسدود کردن WebRTC آبی است.
نحوه فعال کردن WebRTC در مرورگر Yandex
برای فعال کردن WebRTC در مرورگر Yandex، به بخش Addenda بروید.
به پایین بروید و بر روی افزونه کاتالوگ برای مرورگر Yandex کلیک کنید.
Vikonate diy:
- نام افزونه را در ردیف جوک ها وارد کنید: کنترل WebRTC
- برای نصب روی افزونه کلیک کنید.
افزودن به مرورگر Yandex را فشار دهید.
Insert extension را فشار دهید.
افزونه را فعال کنید. نماد پلاگین برای مسدود کردن WebRTC آبی است.
نحوه فعال کردن WebRTC در مرورگر SRWare Iron
مرورگر SRWare Iron مبتنی بر Google Chrome.
افزونه WebRTC Control را برای دستورالعمل نصب کنید.
امروزه WebRTC یک فناوری داغ برای پخش صدا و تصویر در مرورگرها است. فناوریهای محافظهکار مانند HTTP Streaming و Flash برای توزیع محتوای ضبطشده مناسبتر هستند (ویدئو در صورت تقاضا) و WebRTC اغلب از نظر پخش آنلاین و بلادرنگ قربانی میشود، به طوری که نیاز به حداقل انسداد ویدیو وجود دارد که اجازه میدهد. بینندگان برای دسترسی به روی آنتن».
امکان ارتباط بلادرنگ مشابه خود معماری WebRTC است که از پروتکل UDP برای انتقال جریان های ویدئویی استفاده می کند که مبنای استاندارد برای انتقال ویدئو با کمترین نویز است و به طور گسترده در سیستم های ارتباطی بلادرنگ استفاده می شود.
انسداد ارتباطات در سیستمهای پخش آنلاین، وبینارها و سایر افزونهها، ارتباط تعاملی غیرضروری با ساختگی ویدیویی، فهرست نهایی نهایی مهم است و نیاز به تأیید دارد.
یکی دیگر از دلایلی که WebRTC را امتحان کنید، به طرز دیوانه کننده ای، یک روند است. اندروید پوست امروزی مرورگر کرومپشتیبانی از این فناوری، که میلیونها پیوست را تضمین میکند، آماده پخش قبل از ویرایش بدون نصب نرمافزار و تنظیمات اضافی.
به منظور تبدیل فناوری WebRTC در سمت راست و راه اندازی یک پخش آنلاین ساده بر روی آن، سرور نرم افزار Flashphoner WebRTC Media & Broadcasting Server را هک کردیم. این ویژگی ها ادعا می کنند توانایی پخش جریان های WebRTC در حالت "یک به چند" و همچنین پشتیبانی از دوربین های IP و سیستم های هشدار ویدئویی از طریق پروتکل RTSP. به این ترتیب ما به پخش های وب وب و ویژگی های آنها نگاه می کنیم.
نصب WebRTC Media & Broadcasting Server
oskolki برای سیستم ویندوزنسخه سرور ظاهر نشد و من نمی خواستم یک ماشین مجازی مانند VMWare + Linux نصب کنم، به پخش آنلاین در خانه اعتراض کنم کامپیوتر ویندوزخوب پیش نرفت برای صرفه جویی در یک ساعت، یک نمونه از میزبانی غم انگیز را برای لحظه ای مانند زیر گرفتیم:
Ce buv Centos x86_64 نسخه 6.5 بدون هیچ نرم افزار نصب شده در مرکز داده آمستردام. در این رتبه، همه چیزهایی که ما ترتیب دادیم، همان سرور و دسترسی ssh به جدید است. برای کسانی که با دستورات کنسول لینوکس آشنا هستند، نصب سرور WebRTC باید آسان و بدون دردسر باشد. اوتزه، شو می زروبیلی:
1. دریافت آرشیو:
$ wget https://website/download-wcs5-server.tar.gz
2. باز کردن بسته بندی:
$ Tar -xzf download-wcs5-server.tar.gz
3. درج:
$ سی دی FlashphonerWebCallServer
زمان نصب آدرس IP سرور را وارد کنید: XXX.XXX.XXX.XXX
4. فعال کردن مجوز:
$ cd /usr/local/FlashphonerWebCallServer/bin
$. /activation.sh
5. سرور WCS را راه اندازی کنید:
$ شروع سرویس دهنده وب تماس
6. گزارش را بررسی کنید:
$ Tail - f /usr/local/FlashphonerWebCallServer/logs/flashphoner_manager.log
7. بررسی کنید که دو فرآیند در محل وجود دارد:
$ps aux | grep Flashphoner
فرآیند نصب پایانه ها.
تست WebRTC پخش آنلاین
آزمایش پخش ها بسیار ساده به نظر می رسید. به عنوان افزودنی به سرور، یک وب کلاینت وجود دارد که از ده ها فایل جاوا اسکریپت، HTML و CSS تشکیل شده است و در مرحله نصب توسط ما به پوشه / var / www / html شلیک شده است. تنها کاری که باید انجام دهید این است که آدرس IP سرور را در پیکربندی flashphoner.xml وارد کنید تا وب کلاینت بتواند فوراً از طریق HTML5 Websockets با سرور ارتباط برقرار کند. بیایید روند آزمایش را شرح دهیم.
1. نمایش index.html سمت مشتری آزمایشی در مرورگر کروم:
2.
برای شروع پخش، باید دکمه "شروع" را در وسط صفحه فشار دهید.
قبل از شروع، لازم است وب کم را تغییر دهید تا متصل و آماده کار باشد. ما نتوانستیم به طور خاص به وب کم برسیم، به عنوان مثال، دوربین استاندارد نصب شده در لپ تاپ با ساختمان جداگانه 1280 × 800 را شکست دادیم.
مرورگر کروم فوراً درخواست دسترسی به دوربین و میکروفون میکند تا مشخص کند ویدیوی شما در سرور اینترنت آپلود میشود و اجازه دانلود داده میشود.
3. رابط پخش موفقیت آمیز جریان ویدئو از دوربین به سرور WebRTC است. در گوشه سمت راست بالا یک نشانگر وجود دارد که نشان می دهد جریان به سمت سرور می رود، در گوشه پایین دکمه "Stop" برای صدای ویرایش ویدیو وجود دارد.
به نیروی موجود در میدان از پایین احترام بگذارید. وان برای انتقام از شناسه منحصربهفرد این تاپیک، پس اگر بد باشد، میتوانید به بررسی بیایید. پیام را در مرورگر تمام کنید. برای کپی کردن آن در کلیپ بورد، باید روی دکمه "کپی" کلیک کنید.
در افزونههای واقعی برای وبینارها، سخنرانیها، پخشهای ویدیویی آنلاین و تلویزیون تعاملی، خردهفروشان این فرصت را دارند که توزیع همان شناسه را بین گروههای آوازخوان بینندگان اجرا کنند تا بوی تعفن بتواند به جریانهای مورد نیاز متصل شود. بلکه منطق ربات ها. سرور رسانه و پخش WebRTC її متوقف نشوید، اما مراقب پخش ویدیوها باشید.
5. Z'ednannya نصب شده و potik را روی صفحه نمایش می دهد. اکنون می توانید درخواست را به شخص دیگری اصلاح کنید، جریان را شروع کنید یا آن را روشن کنید حالت تمام صفحه، کنترل Koristuyuchis در چین پایین سمت راست.
نتایج آزمایش سرور WebRTC برای پخش آنلاین
در یک ساعت آزمایش، تریم ایده آل به نظر می رسید. پینگ به مرکز داده نزدیک به 100 میلی ثانیه بود و انسداد واضح بود. Zvіdsi، شما می توانید آن را رها کنید، که لکنت واقعی 100 به علاوه یا منهای چند ده میلی ثانیه در هر ساعت بافر است. نحوه رفتار با ویدیوی فلش: در چنین آزمایشاتی، با Flash به اندازه WebRTC مهربان رفتار نمی شود. بنابراین، اگر دست خود را روی حصار مشابهی بیندازید، می توانید آن را تنها در یک یا دو ثانیه روی صفحه تکان دهید.
قابل توجه است که امکان جدا کردن مکعب ها روی دست ها وجود دارد. این از ماهیت کدک VP8 پیروی می کند و وظیفه اصلی آن اطمینان از تماس های ویدیویی در زمان واقعی با وضوح دلپذیر و بدون وقفه در ارتباط است.
راه اندازی و نصب سرور آسان است، برای راه اندازی آن نیازی به داشتن دانش جدی از لینوکس در سطح یک koristuvach چسبنده نیست، که به شما امکان می دهد دستورات را از کنسول از طریق ssh و koristuvatisya منتقل کنید. ویرایشگر متن. در کیف، ما توانستیم از پخش آنلاین یک به چند بین مرورگرها لذت ببریم. اتصال ناظران اضافی به جریان هیچ مشکلی ایجاد نکرد.
کیفیت پخش برای وبینارها و جوایز آنلاین کاملاً قابل قبول بود. تنها کسی که به شماس غذا زنگ زد - او فیلم را فرستاد. دوربین از 1280 × 800 پشتیبانی می کند، اما در تصویر آزمایشی شبیه به 640 × 480 به نظر می رسد. شاید لازم باشد با خرده فروشان بررسی کنید.
ویدیو از پخش آزمایشی از وب کم
از طریق سرور WebRTC
Єvropeisyki Korostuvachi، آنها تحت تأثیر بخش های دور قرار گرفتند: Zgіtyu به دستورالعمل های vene analiz Gromadsko Duma در Allenbach (Nimechina)، اسکایپ، چت سیستم های Mittai از 9.5 میلیون دامر برای 16.5 میلیون، برای 16.5 میلیون خدمات در مقابل tsі. vypadku به vypadku، و 28 میلیون قبل از آنها نمی چسبد در اطراف.
ممکن است وضعیت تغییر کند، خردهها اکنون در فایرفاکس ادغام شدهاند فناوری ارتباطات بلادرنگ (WebRTC) و همچنین خود مشتری. راه اندازی صدا و صدا در حال حاضر هیچ چیز پیچیده تر، سایت با دید پایین تر. از سوی دیگر، چنین خدماتی مانند فیسبوک و اسکایپ، نرخ رزولوشن برد مشتری و ایجاد رکورد عمومی را افزایش میدهند.
WebRTC نه تنها با سادگی zastosuvannya طنین انداز می شود. این روش به شما امکان نصب را می دهد ارتباط مستقیم بین دو مرورگر. به این ترتیب، دادههای صوتی و تصویری نباید از سرور عبور کنند، جایی که میتوان آنها را غرق کرد، در غیر این صورت مدیر به اهمال کاری خاص حوزه خصوصی یا حفاظت از دادهها اهمیتی نمیدهد. اتصال مستقیم برای WebRTC نیازی به ثبت نام ندارد رکورد فیزیکیدر هر خدمتی
برای لپه گفتگو فقط باید از قدرت گذشت. Spillkuvannya خصوصی می شود، داده های Oskіlki potіk رمزگذاری شده اند. ارتباط بیدرنگ از طریق یک مرورگر، گوگل در سال 2011 زمانی که کد پیادهسازی WebRTC خود را منتشر کرد، فعالانه درگیر شد.
اخیراً آخرین کروم و فایرفاکس قدرت موتورهای WebRTC را از بین بردند. در ساعت معین گزینه های موبایلمجهز به همین فناوری و همچنین نصب یکباره با اندروید 5.0 توسط موتور WebView 3.6 که توسط افزونه ها پشتیبانی می شود.
برای ارتباط بلادرنگ در مرورگر وب، باید از رابط جاوا اسکریپت استفاده کنید. برای کمک GetUserMedia امنیت نرم افزارفعال کردن ضبط صوتی ویدیوگرل، یعنی از وب کم و میکروفون. RTCPeerConnection مسئول برقراری ارتباط و همچنین خود ارتباط است.
به موازات یکپارچه سازی مرورگر گروه کاریکنسرسیوم وب جهانی (W3C) فرآیند استانداردسازی WebRTC را مجبور می کرد. شراب در حال حاضر در چرخش 2015 به پایان می رسد.
WebRTC از Malim راضی است
شما می توانید بدون نیاز به منابع زیادی از خدمات WebRTC استفاده کنید، اما سرور فقط به پشتیبان نیاز دارد. نصب z'ednanny نیز پیچیدگی خاصی را نشان نمی دهد. در همان زمان، مرورگر سیگنالی را به سرور WebRTC ارسال می کند که قصد دارد یک تماس هفتگی را آغاز کند. سرور Vіd vіn otrimuє HTTPS-پیام - zv'yazok zdіysnyuєtsya به صورت رمزگذاری شده. Tsey link koristuvach جاسوس خود را مدیریت می کند. پس از آن، مرورگر از koristuvach خواست تا به وب کم و میکروفون دسترسی پیدا کند.
برای نصب اتصال جریان مستقیم با مرورگر مرورگر، مرورگر نوع سرویس WebRTC، آدرس IP و دادههای پیکربندی را در نظر میگیرد. مرورگر وب یک spivrozmovnik باید از همان رتبه باشد.
به طوری که اتصال جریان بدون وقفه و در کار می کرد کیفیت خوب، سه موتور در مرورگر وجود دارد. دو مورد از آنها صدای داده های ویدئویی را بهینه می کنند و فشرده می کنند، سومی برای حمل و نقل آنها است. Vіn داده ها را برای کمک ارسال کرد پروتکل SRTP(پروتکل امن حمل و نقل بلادرنگ)، که امکان پخش همزمان رمزگذاری شده را فراهم می کند.
اگر نمی دانید که چگونه آن را مستقیماً نصب کنید، WebRTC به دنبال راه دیگری است. به عنوان مثال، tse vіdbuvaєtsya در آن لحظه، اگر تنظیمات حاشیهبه این واقعیت تغییر دهید که سرور STUN باید سعی کند آدرس IP را دوباره اختصاص دهد. استاندارد WebRTC آنچه را که ممکن است به هر طریقی که ممکن باشد، ارسال می کند، حتی اگر سرور TURN (پیمایش با استفاده از رله ها در اطراف NAT) فعال باشد. بنابراین، در سایت netscan.co می توانید بررسی کنید که آیا WebRTC بر روی رایانه شما و با دسترسی شما به Merezhya پیاده سازی شده است یا خیر.
روز چطوره
در پشت، باید مکالمه را ثبت کنید (1). سرویس WebRTC درخواستی را ارسال می کند، زیرا ارسال پیام به مرورگر ضروری است. مرورگر پشت سر کمک STUNserver آدرس IP خود (2) را بازیابی می کند، سرویس را ویرایش می کند و IP شریک را برای راه اندازی یک اتصال مستقیم حذف می کند (3). اگر STUN برای برنده شدن تلاش نکند، مکالمه به کمک سرور TURN (4) هدایت می شود.
تماس WebRTC در مرورگر برای کد جاوا اسکریپت اضافی راه اندازی می شود. سه موتور مسئول ارتباطات هستند: موتورهای صوتی و تصویری داده های چندرسانه ای را از وب کم و میکروفون جمع آوری می کنند و موتور حمل و نقل اطلاعات را ترکیب می کند و جریان را به شکل رمزگذاری شده با استفاده از پروتکل SRTP (پروتکل امن زمان واقعی) ارسال می کند.
نحوه کار مرورگرها با WebRTC
کروم و فایرفاکس مجهز به موتور WebRTC هستند، نوعی سرویس مانند talky.io. مرورگری مانند موزیلا را می توان مستقیماً با مشتری خود استفاده کرد.
گوگل و موزیلا به توسعه ایده ارتباطات بلادرنگ ادامه می دهند: کروم می تواند یک کنفرانس WebRTC با شرکت کنندگان decalcom برگزار کند و کلاینت جدید Hello در فایرفاکس با پیوستن به یک شرکت تابعه از غول مخابراتی Telefonica گسترش خواهد یافت. اپل هنوز در حاشیه است، در Safari WebRTC هنوز به نتیجه نرسیده است. با این حال، هیچ افزونه جایگزینی برای iOS و پلاگین برای سافاری وجود ندارد.
شرکت مایکروسافت کمی متفاوت پیش می رود. به عنوان استاد خدمات رقابتی اسکایپ داده شده استشرکت به این راحتی تسلیم شدن در مقابل WebRTC را انتخاب نمی کند. معاون آن مایکروسافت در حال توسعه فناوری به نام ORTC (ارتباطات بلادرنگ شی) برای اینترنت اکسپلورر.
چنین ویژگیهایی در WebRTC، مانند سایر کدکها و پروتکلها برای برقراری ارتباط با سرور، ناچیز هستند و در طول ساعت، برای همه چیز رایجتر میشوند و به یک ضمیمه برای استاندارد WebRTC تبدیل میشوند که شامل تفاوتهای زیادی است. در چنین رتبهای، فقط اپل باقی مانده است - چگونه صدا کنیم.
یک عکس:شرکت های ویروسی؛ Goodluz / Fotolia.com
WebRTC یک API است که توسط مرورگر پشتیبانی می شود و امکان سازماندهی ضبط P2P و انتقال داده ها را بدون واسطه بین مرورگرها فراهم می کند. در اینترنت، برای نوشتن یک چت ویدیویی شخصی برای کمک WebRTC کمک زیادی دریافت کنید. به عنوان مثال، محور مقاله در Habré. با این حال، همه بوی بد توسط دو مشتری از هم جدا می شوند. در این مقاله، من سعی خواهم کرد در مورد آنها اطلاعاتی را منتشر کنم، همانطور که برای کمک به WebRTC، برای سازماندهی ارتباط و تبادل پیام بین سه نفر و کوریستوواچ های بیشتر.
رابط RTCPeerConnection - اتصال همتا به همتا بین دو مرورگر. برای اتصال سه هسته یا بیشتر، باید یک مش-مرز (merezh، در یک vuzol چرمی از اتصالات به تمام گره های دیگر) را سازماندهی کنیم.
بیایید به طور نایب یک طرح ارائه کنیم:
- وقتی طرف را بررسی می کنید، وجود شناسه اتاق را در آن بررسی می کنیم مکان.هش
- اگر شناسه اتاق مشخص نشده باشد، یک شناسه جدید ایجاد می شود
- سرور سیگنالینگ Vіdpravlyaєmo "در اطلاعیه کسانی که می خواهیم به اتاق تعیین شده بیایند
- سرور سیگنالینگ اعلانهای مربوط به یک koristuvach جدید را برای سایر مشتریان در این اتاق ارسال میکند
- مشتریانی که به اتاق تغییر می کنند، تازه واردان پیشنهاد SDP را مدیریت می کنند
- تازه وارد به این پیشنهاد پاسخ داد «و
0. سرور سیگنالینگ
ظاهراً چه WebRTC امکان پذیر باشد و چه P2P بین مرورگرها امکان پذیر باشد، برای این کار، حمل و نقل اضافی برای تبادل پیام های سرویس مورد نیاز است. در این مورد، به عنوان یک انتقال، از سرور WebSocket استفاده می شود که در Node.JS با ویژگی های socket.io نوشته شده است:
var socket_io = require("socket.io"); module.exports = تابع (سرور) (کاربران var = ()؛ var io = socket_io (سرور)؛ io.on ("اتصال"، تابع (سوکت) (// ایجاد یک میزبان جدید برای ورود به اتاق سوکت.on ( "اتاق "، تابع (پیام) (var json = JSON.parse (پیام)؛ // افزودن سوکت به لیست کاربران هم اتاقی = سوکت؛ اگر (socket.room! == تعریف نشده) (// اگر سوکت در حال حاضر در این اتاق است، به نظر می رسد socket.leave (socket.room);) // ورود به اتاق برقی socket.room = json.room؛ socket.join (socket.room); socket.user_id = json.id؛ / / ارسال به دیگر مشتریان در این اطلاعیه در مورد ورود یک شرکت کننده جدید socket.broadcast.to (socket.room) .emit("new", json.id);)); socket.on ("webrtc"، تابع (پیام) (var json = JSON.parse (پیام)؛ اگر (json.to! == تعریف نشده && کاربران! == تعریف نشده) (// به سرور ki youmu ... users.emit("webrtc", message); ) در غیر این صورت (// ... در غیر این صورت لطفاً به wide socket.broadcast.to (socket.room).emit ("webrtc", message);))) توجه کنید. . حذف کاربران؛))؛ ))؛ )
1. index.html
کد خروج خود حزب ساده است. من مطمئناً به نسخه و سایر زیبایی ها احترام نمی گذارم ، بنابراین مقاله در مورد آن نیست. اگر کسی می خواهد، یک انبار زیبا، مخصوصاً دشوار بسازد.
2.main.js
2.0. ویرایش پیام در عناصر جانبی و رابط WebRTC
var chatlog = document.getElementById("chatlog"); var message = document.getElementById("پیام"); var connection_num = document.getElementById("connection_num"); var room_link = document.getElementById("link_room");ما مجبور شدیم پیشوندهای مرورگر را برای پیوند به رابط های WebRTC از همان ابتدا تغییر دهیم.
Var PeerConnection = window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var SessionDescription = window.mozRTCSessionDescription || window.RTCSessionDescription; var IceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate;
2.1. شناسه اتاق تعیین شده
در اینجا ما به یک تابع برای ایجاد یک شناسه منحصر به فرد برای یک اتاق و یک koristuvach نیاز داریم. بیایید این اهداف UUID را هک کنیم.
تابع uuid()(var s4 = function()(return Math.floor(Math.random()*0x10000).toString(16);؛ بازگشت s4()+s4()+"-"+s4()+ "-" + s4 () + "-" + s4 () + "-" + s4 () + s4 () + s4 ();)
اکنون سعی می کنیم شناسه اتاق را از آدرس استخراج کنیم. اگر این تنظیم نشده باشد، یک مورد جدید ایجاد می کنیم. ما در کنار پیام به اتاق درون خطی نشان خواهیم داد، و با یک حرکت، یک شناسه برای koristuvach درون خطی ایجاد می کنیم.
VarROOM = location.hash.substr(1); if (! ROOM) (ROOM = uuid ();) room_link.innerHTML = "پیوند به اتاق"; varME = uuid();
2.2. سوکت وب
یک بار به سرور سیگنالینگ خود وصل می شویم "y، درست است که ورودی اتاق و شاید زنگ های بیدارباش را بخواهیم.
// ممکن است هنگامی که اتصال مجدد بسته می شود، لازم است سرور اعلان را راه اندازی کنید var socket = io.connect ( "", ( " sync disconnect on unload": true)); socket.on("webrtc", socketReceived); socket.on ("جدید"، socketNewPeer); // بلافاصله، می توان برای ورودی اتاق درخواست کرد socket.emit ( "room", JSON.stringify ((id: ME, room: ROOM))); // عملکرد اضافی برای ویرایش اعلانهای آدرس مربوط به تابع WebRTC sendViaSocket (نوع، پیام، به) (socket.emit ( "webrtc", JSON.stringify ((id: ME, to: to, type: type, data :message) ))))
2.3. راه اندازی PeerConnection
اکثر ISP ها می توانند از طریق NAT به اینترنت متصل شوند. از طریق ce ارتباط مستقیمدر سمت راست چندان پیش پا افتاده نمی شود. هنگام ایجاد یک اتصال، باید لیستی از سرورهای STUN و TURN را مشخص کنیم تا از مرورگر خواسته شود تا NAT را دور بزند. پس بیایید یک زوج را نشان دهیم گزینه های اضافیبرای اتصال
Var server = (iceServers: [(url: "stun: 23.21.150.121")، (url: "stun: stun.l.google.com: 19302")، (url: "turn: numb.viagenie.ca"، اعتبار: "رمز عبور شما اینجا می رود"، نام کاربری: " [ایمیل محافظت شده]")])؛ گزینه های Var = (اختیاری: [(DtlsSrtpKeyAgreement: true)، // برای اتصال بین کروم و فایرفاکس (RtpDataChannels: درست) // مورد نیاز در فایرفاکس برای استفاده از DataChannels API])
2.4. اتصال کوریستوواچ جدید
اگر بانک جدیدی به اتاق اضافه شود، سرور برای ما اعلان ارسال می کند جدید. یادآوری به کارمندان مهم است، ما موارد بیشتری را اختصاص می دهیم، تابع را فراخوانی می کنیم socketNewPeer.
var peers = (); تابع socketNewPeer (داده) (peers = (candidateCache:)؛ // ایجاد یک اتصال جدید var pc = new PeerConnection (سرور، گزینه ها)؛ // راه اندازی آن در initConnection (کامپیوتر، داده، "پیشنهاد")؛ // انتخاب یک Bean از لیست peers.connection = pc؛ // ایجاد یک DataChannel که و انتظار می رود برای آن اعلان ها مبادله شود var channel = pc.createDataChannel ( "mychannel"، ())؛ channel.owner = داده؛ peers.channel = کانال. bindEvents (کانال)؛ // ایجاد یک پیشنهاد SDP pc.createOffer (عملکرد (پیشنهاد) (pc.setLocalDescription (پیشنهاد));) تابع initConnection (pc، id، sdpType) (pc.onicecandidate = تابع (رویداد) ( if (event.candidate) (// اگر یک نامزد جدید ICE برای بازبینی بیشتر به لیست اضافه شود peers.candidateCache.push (event.candidate)؛) در غیر این صورت (// اگر کشف نامزد تکمیل شود، چک لیست فراخوانی می شود. دوباره، اما بدون نامزد // ما یک ذینفع را با پیشنهاد SDP یا پاسخ SDP (با تأخیر) برای او ارسال می کنیم به عنوان پارامتر تابع) ... sendViaSocket (sdpType, pc.localDescription, id); // ... و سپس همه نامزدهای ICE قبلاً شناخته شده برای (var i = 0; i< peers.candidateCache.length; i++) { sendViaSocket("candidate", peers.candidateCache[i], id); } } } pc.oniceconnectionstatechange = function (event) { if (pc.iceConnectionState == "disconnected") { connection_num.innerText = parseInt(connection_num.innerText) - 1; delete peers; } } } function bindEvents (channel) { channel.onopen = function () { connection_num.innerText = parseInt(connection_num.innerText) + 1; }; channel.onmessage = function (e) { chatlog.innerHTML += "
2.5. پیشنهاد SDP، پاسخ SDP، نامزد ICE
هنگامی که یکی از آنها برداشته می شود، خلاصه ای از اولین تایید را صدا می زنیم.
تابع socketReceived (داده) (var json = JSON.parse (داده)؛ سوئیچ (json.type) (مورد "کاندیدا": remoteCandidateReceived (json.id، json.data)؛ شکست؛ مورد "پیشنهاد": remoteOfferReceived (json. شناسه، json.data؛ شکست؛ مورد «پاسخ»: remoteAnswerReceived(json.id، json.data؛ شکست؛))
2.5.0 پیشنهاد SDP
تابع remoteOfferReceived(id, data)(createConnection(id)؛ var pc = peers.connection؛ pc.setRemoteDescription(new SessionDescription(data))؛ pc.createAnswer(function(answer)(pc.setLocalDescription(پاسخ);)); ) تابع createConnection (id) (اگر (Peers === تعریف نشده) (Peers = (candidateCache:)؛ var pc = New PeerConnection (سرور، گزینه ها)؛ initConnection (pc, id, "answer")؛ peers.connection = pc ;pc.ondatachannel = تابع (e) (peers.channel = e.channel; peers.channel.owner = id; bindEvents(peers.channel);)))2.5.1 پاسخ های SDP
تابع remoteAnswerReceived(id, data) (var pc = peers.connection; pc.setRemoteDescription(new SessionDescription(data))؛)2.5.2 نامزد ICE
تابع remoteCandidateReceived(id, data) (createConnection(id)؛ var pc = peers.connection؛ pc.addIceCandidate(new IceCandidate(data))؛)2.6. تصحیح اطلاعیه
هنگام فشار دادن دکمه ارسالتابع فراخوانی پیام فرستادن. هر کاری که باید انجام شود، لازم است لیست ذینفعان را مرور کنید و سعی کنید تمام اطلاعات ذکر شده را اصلاح کنید.
WebRTC(ارتباطات بلادرنگ وب) فناوری است که به افزونهها و سایتها اجازه دانلود و لرزش برای انتقال جریانهای رسانههای صوتی و/یا ویدیویی و همچنین تبادل دادههای کافی بین مرورگرها را بدون استفاده از یک واسطه مبتنی بر زبان میدهد. مجموعهای از استانداردها که شامل فناوری WebRTC میشود، امکان تبادل دادهها و انجام کنفرانسهای تلفنی همتا به همتا را بدون نیاز به نصب افزونهها یا امنیت نرمافزار dodatkove میدهد.
WebRTC از تعدادی رابط نرم افزاری (API) و پروتکل هایی که با هم کار می کنند تشکیل شده است. همانطور که در اینجا مشاهده میکنید، مستندات به شما کمک میکند تا اصول WebRTC، نحوه تعمیر و تنظیم دادهها برای انتقال دادهها و پخش رسانهها و بسیاری موارد دیگر را درک کنید.
جنون
Oskіlki، پیاده سازی WebRTC در فرآیند تبدیل شدن و مرورگر پوست ممکن است عملکردهای WebRTC نداشته باشد، اکیداً توصیه می شود کتابخانه Adapter.js Polythem را مانند Google برای شروع کار روی کد خود لغو کنید.
Adapter.js گوهها و polyfillها برای دوخت نرم مجوزها در پیادهسازی محیطهای زمینه WebRTC که از آن پشتیبانی میکنند. Adapter.js همچنین پیشوندهای عمومی و سایر قراردادهای نامگذاری مرجع را مدیریت می کند که توسعه WebRTC را با بیشترین نتایج انباشته آسان تر می کند. خود کتابخانه به صورت بسته NPM در دسترس است.
برای آشنایی کمی با کتابخانه Adapter.js، marvel.
درک و درک WebRTC
WebRTC غنی و در عین حال قدرتمند است، قابلیتهای چندرسانهای را برای وب افزایش میدهد، از جمله پشتیبانی از کنفرانسهای صوتی و تصویری، اشتراکگذاری فایل، سیل صفحهنمایش، مدیریت شناسایی و تعامل با سیستمهای تلفن قدیمی، از جمله شمارهگیری صدا برای انتقال سیگنال DTMF. اتصالات بین گره ها را می توان بدون vikoristannya ایجاد کرد درایورهای خاصیا پلاگین، و اغلب بدون خدمات میانی.
ارتباط بین دو گره به عنوان یک شی در رابط RTCPeerConnection ارائه می شود. به محض نصب و شناسایی داده ها، شی RTCPeerConnection، جریان های رسانه (MediaStream s) و/یا کانال های داده (RTCDataChannel s) را می توان به داده ها اضافه کرد.
جریان های رسانه ای را می توان از هر تعداد آهنگ (تراک) اطلاعات رسانه ای تشکیل داد. آهنگ های ارائه شده توسط اشیاء به رابط MediaStreamTrack می توانند حاوی یک یا چند نوع فایل چندرسانه ای، از جمله صدا، ویدئو، متن (مانند زیرنویس یا عنوان فصل) باشند. اکثر جریانها حداقل فقط از یک تراک صوتی (یک آهنگ صوتی) یا آهنگهای ویدیویی اضافه میشوند و میتوانند ویرایش و حذف شوند، مانند جریانها (دادههای رسانه در ساعت مناسب) یا در یک فایل ذخیره شوند.
بنابراین، امکان برنده شدن تماس بین دو گره برای تبادل داده های بیشتر، برای برنده شدن یک شی در رابط RTCDataChannel وجود دارد که می تواند برای انتقال اطلاعات سرویس، تبادل داده ها، بسته ها و انتقال بر روی وضعیت ها، انتقال فایل ها به کانال ها شکست بخورد.
جزئیات بیشتر و پیوندهایی به راهنماها و آموزش های مربوطه مورد نیاز است
رابط WebRTC
در ارتباط با این واقعیت که WebRTC رابط هایی را ارائه می دهد که برای مشاغل مختلف به خوبی کار می کنند، دنیا آنها را به دسته هایی تقسیم کرده است. از نشانگر حروف الفبای پانل سفید برای ناوبری شگفت زده شوید.
بهبود نظم و مدیریت
واسط های متعددی برای راه اندازی، صداگذاری و مدیریت صفحات WebRTC استفاده می شود. آنها نشان دهنده یک اتصال رسانه واحد، کانال های داده، و رابط هایی هستند که هنگام تبادل اطلاعات در مورد ظرفیت گره پوست، برای انتخاب بهترین پیکربندی هنگام نصب یک اتصال چند رسانه ای دو طرفه استفاده می شود.
RTCPeerConnection یک اتصال WebRTC بین است کامپیوتر محلی و گره دور. پیروزی برای انتقال موفقیت آمیز داده ها بین دو گره. RTCSessionDescription پارامترهای جلسه را نشان می دهد. پوست RTCSessionDescription به جای توصیف نوع، که نشان می دهد بخشی از (گزاره / توصیف) از روند مذاکره شراب توصیف، و SDP - جلسه توصیف. RTCIceCandidate سرور راه اندازی اتصال اینترنت (ICE) نامزد راه اندازی RTCPeerConnection است. RTCIceTransport اطلاعاتی در مورد اتصال به اینترنت (ICE) ارائه می دهد. RTCPeerConnectionIceEvent این امضایی است که در نامزدهای ICE استفاده می شود، RTCPeerConnection را صدا کنید. یک نوع به این شی کاندید ارسال می شود: icecandidate. RTCRtpSender کدگذاری و انتقال داده ها را از طریق یک شی از نوع MediaStreamTrack به یک شی از نوع RTCPeerConnection کنترل می کند. RTCRtpReceiver ضبط و رمزگشایی داده ها را از طریق یک شی از نوع MediaStreamTrack برای یک شی از نوع RTCPeerConnection کنترل می کند. RTCTrackEvent نشان می دهد که یک شی ورودی جدید از نوع MediaStreamTrack ایجاد شده است و یک شی از نوع RTCRtpReceiver به یک شی RTCPeerConnection اضافه شده است. RTCCertificate این گواهی است که شی کوپن RTCPeerConnection است. RTCDataChannel یک کانال داده دو جهته بین دو گره داده. RTCDataChannelEvent این نوع فرعی است که زمانی ایجاد می شود که یک شی از نوع RTCDataChannel به یک شی از نوع RTCPeerConnection datachannel اضافه شود. RTCDTMFSender رمزگذاری و انتقال سیگنال های چند فرکانس صدای دوگانه (DTMF) را برای یک شی از نوع RTCPeerConnection کنترل می کند. RTCDTMFToneChangeEvent یک سیگنال دهی چند فرکانس دو رنگ (DTMF) را در ورودی برای تغییر صدا نشان می دهد. Tsya pod_ya ادغام نشوند (زیرا در غیر این صورت مشخص نشده است) و є casovuvati (چون در غیر این صورت نشان داده نشده است). RTCStatsReport به صورت ناهمزمان وضعیت شی منتقل شده از نوع MediaStreamTrack را گزارش می کند. RTCIdentityProviderRegistrar Registry Identity Provider (idP). RTCIdentityProvider توانایی مرورگر برای درخواست تأیید یا تأیید مجدد یک اعلامیه شناسایی را فعال کنید. RTCIdentityAssertion شناسه گره راه دور سایت پخش را نشان می دهد. اگر گره هنوز بازیابی و تایید نشده باشد، با تبدیل null به رابط ارسال شده است. بعد از نصب تغییری نکرده است. RTCIdentityEvent نشان دهنده یک شیء اعلام هویت ارائه دهنده هویت (idP). نوع شی Podіya RTCPeerConnection. یک نوع به sub-identityresult منتقل می شود. RTCIdentityErrorEvent یک شی عفو مرتبط با ارائه دهنده هویت (idP) را نشان می دهد. نوع شی Podіya RTCPeerConnection. دو نوع بخشش به این فرعی منتقل می شود: idpassertionerror و idpvalidationerror.