Webrtc کنفرانس ویدئویی در مرورگر. چت چند کاربر با استفاده از WEBRTC در راه حل های تخصصی

WebRTC (به اختصار از ارتباطات در زمان واقعی ارتباطات) یک تکنولوژی است که به شما اجازه می دهد تا داده های صوتی و تصویری را بین مرورگرها و برنامه های تلفن همراه انتقال دهید.


توسعه این تکنولوژی رقابت اسکایپ است. WebRTC می تواند برای سازماندهی کنفرانس های ویدئویی به طور مستقیم در مرورگر استفاده شود. این پروژه دارای یک کد منبع باز است و به طور فعال توسط Google و به ویژه تیم توسعه مرورگر Google Chrome ارتقا یافته است.


مرورگرهای کاربر به لطف تکنولوژی WebRTC می توانند به طور مستقیم داده ها را به یکدیگر انتقال دهند. WebRTC به یک سرور جداگانه نیاز ندارد که داده ها را ذخیره و پردازش کند. تمام داده ها به طور مستقیم توسط Brars و برنامه های کاربردی کاربر نهایی موبایل پردازش می شود.


تکنولوژی WebRTC توسط همه محبوب موزیلا فایرفاکس، اپرا، گوگل کروم (و تمام مرورگرها بر اساس Google Chrome)، و همچنین برنامه های کاربردی تلفن همراه بر اساس آندروید و iOS پشتیبانی می شود.

خطر Webrtc.

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

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


اگر از یک پروکسی استفاده می کنید، WebRTC می تواند آدرس IP واقعی خود را برای سرور VPN آدرس پروکسی یا آدرس IP را تعیین کند، اگر از یک زنجیره پروکسی VPN + استفاده می کنید.


WebRTC همچنین هنگام استفاده از شبکه Tor، آدرس IP واقعی خود را تعریف می کند.


بهترین راه حل این است که اگر از آن استفاده نکنید، تکنولوژی WebRTC را غیرفعال کنید.

چگونه WebRTC را در مرورگرها خاموش کنیم

ناوبری سریع در این صفحه.

نحوه غیرفعال کردن WebRTC در موزیلا فایرفاکس

مرورگر Mozilla Firefox یک مرورگر واحد است که به شما اجازه می دهد تا تکنولوژی WebRTC را بدون نصب پلاگین های اضافی غیرفعال کنید.

تنظیم دستی

اگر از تکنولوژی WebRTC استفاده نکنید، می توانید آن را کاملا غیرفعال کنید. در مورد زمانی که لازم است از WebRTC به طور دوره ای راحت تر استفاده شود.

برای غیرفعال کردن تکنولوژی WebRTC در موزیلا فایرفاکس، باید متن زیر را در نوار آدرس مرورگر وارد کنید و دکمه ENTER را فشار دهید.

درباره: پیکربندی


کلیک کنید، من یک دکمه ریسک را ایجاد می کنم.


انجام موارد زیر را انجام دهید:

  1. در رشته جستجو، متن را وارد کنید و Enter را فشار دهید.
  2. media.peerconnection.Enabled.
  3. روی رشته راست کلیک کرده و سوئیچ را انتخاب کنید. یا دوبار کلیک بر روی خط.


پس از این مراحل، Webrtc غیر فعال خواهد شد.

تنظیم از طریق پلاگین کنترل WebRTC

اگر از تکنولوژی WebRTC استفاده می کنید، سپس خاموش و خاموش شدن از طریق تنظیمات طول می کشد. یک پلاگین را نصب کنید که به روشن و خاموش کردن WebRTC در 1 ماوس کلیک کنید.

افزودنیهای باز


انتخاب کنید:

  1. بخش جستجو
  2. نام پلاگین را به رشته جستجو وارد کنید: کنترل WebRTC
  3. روی دکمه نصب کلیک کنید


نحوه غیرفعال کردن Webrtc در مرورگر اپرا

برای خاموش کردن WebRTC در مرورگر اپرا، به گالری پسوند بروید.


این مراحل را دنبال کنید:

  1. نام پلاگین را در نوار جستجو وارد کنید: کنترل WebRTC
  2. روی افزونه کلیک کنید


روی افزودن به اپرا کلیک کنید.


پلاگین را فعال کنید آیکون پلاگین باید برای قفل WebRTC آبی باشد.

چگونه WebRTC را در Google Chrome غیرفعال کنیم

برای غیرفعال کردن WebRTC در مرورگر Google Chrome، به بخش توسعه بروید.


پایین صفحه را پایین بیاورید و افزودنی های بیشتری را فشار دهید.


این مراحل را دنبال کنید:

  1. نام پلاگین را به رشته جستجو وارد کنید: کنترل WebRTC
  2. روی دکمه نصب کلیک کنید.



پلاگین را فعال کنید آیکون پلاگین باید برای قفل WebRTC آبی باشد.

نحوه غیرفعال کردن WebRTC در مرورگر Yandex

برای غیرفعال کردن WebRTC به مرورگر Yandex، به بخش افزودنیها بروید.


صفحه پایین را پایین بیاورید و دایرکتوری فرمت را برای مرورگر Yandex فشار دهید.


انجام موارد زیر را انجام دهید:

  1. نام پلاگین را در نوار جستجو وارد کنید: کنترل WebRTC
  2. برای نصب روی افزونه کلیک کنید.


روی افزودن به مرورگر Yandex کلیک کنید.


روی نصب افزونه کلیک کنید.


پلاگین را فعال کنید آیکون پلاگین باید برای قفل WebRTC آبی باشد.

نحوه غیرفعال کردن WebRTC در مرورگر آهن Srware

مرورگر srware آهن بر اساس Google Chrome ساخته شده است.

پلاگین کنترل WEBRTC را با توجه به دستورالعمل های نصب کنید.

WebRTC یک API ارائه شده توسط یک مرورگر است و به شما اجازه می دهد تا اتصال P2P و انتقال داده را به طور مستقیم بین مرورگرها سازماندهی کنید. در اینترنت چند کتابچه راهنمای کاربر برای نوشتن چت ویدئویی خود را با استفاده از WEBRTC وجود دارد. به عنوان مثال، در اینجا یک مقاله در مورد هابر است. با این حال، همه آنها محدود به اتصال دو مشتری هستند. در این مقاله، سعی خواهم کرد در مورد چگونگی سازماندهی ارتباط و پیام بین سه و چند کاربر با استفاده از WEBRTC سازماندهی کنم.

رابط RTCPeerconnection یک اتصال همکار به همگانی بین دو مرورگر است. برای اتصال سه و بیشتر کاربران، ما باید یک شبکه مش را سازماندهی کنیم (یک شبکه که در آن هر گره به تمام گره های دیگر متصل می شود).
ما از طرح زیر استفاده خواهیم کرد:

  1. هنگام باز کردن یک صفحه، حضور شناسه اتاق را بررسی کنید محل کار.
  2. اگر شناسه اتاق مشخص نشده باشد، ما یک جدید تولید می کنیم
  3. ما ارسال سرور سیگنالینگ "پیام درباره آنچه ما می خواهیم به اتاق مشخص شده بپیوندیم
  4. سرور سیگنالینگ شماره گیری بقیه مشتریان را در این اتاق هشدار کاربر جدید می کند
  5. مشتریان که در حال حاضر به اتاق ارسال یک پیشنهاد جدید SDP ارائه می دهند
  6. Newbie پاسخ به ارائه "S

0. سرور سیگنالینگ

همانطور که می دانید، حداقل Webrtc و امکان اتصالات P2P را بین مرورگرها فراهم می کند، هنوز نیاز به حمل و نقل اضافی برای تبادل پیام های خدمات دارد. در این مثال، سرور WebSocket در Node.js نوشته شده با استفاده از socket.io به عنوان چنین حمل و نقل عمل می کند.

var socket_io \u003d نیاز ("socket.io")؛ module.exports \u003d (سرور) (کاربران var \u003d ()؛ var io \u003d socket_io (سرور)؛ io.on ("اتصال"، تابع (سوکت) (/ / / / تمایل یک کاربر جدید به اتاق socket.on پیوستن (" اتاق "، تابع (پیام) (var json \u003d json.parse (پیام)؛ // اضافه کردن یک سوکت به لیست کاربران کاربران \u003d سوکت؛ اگر (socket.room! \u003d\u003d undefined) (// اگر سوکت در حال حاضر است در برخی از اتاق، از آن خارج می شود socket.leave (socket.room)؛) // socket rocet را وارد کنید \u003d json.room؛ socket.join (socket.roid)؛ socket.user_id \u003d json.id؛ / / ارسال به بقیه مشتریان در این اتاق، یک پیام در مورد پیوستن به یک عضو جدید socket.broadcast.to (socket.room) .emit ("new"، json.id)؛)؛ // پیام مربوط به WebRTC ( پیشنهاد SDP، SDP پاسخ یا نامزد ICE) Socket.on ("WEBRTC"، عملکرد (پیام) (پیام)؛ اگر (json.to! \u003d\u003d undefined && users! \u003d\u003d undefined) (// اگر پیام مشخص شده باشد) گیرنده و این گیرنده شناخته شده به سرور، ارسال پیام فقط به او ... کاربران.emit ("webrtc"، پیام)؛ ) دیگر (// ... در غیر اینصورت ما پیام را با پخش socket.broadcast.to (socket.room) در نظر می گیریم. .emit ("webrtc"، پیام)؛))) // کسی که Socket.On را قطع کرد ("قطع اتصال"، عملکرد () (/ / هنگام جدا کردن مشتری، ما در مورد این socket.broadcast.to (socket.room) ("ترک"، socket.user_id) اطلاع رسانی می کنیم. حذف کاربران؛))) )) )

1. index.html

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

نسخه ی نمایشی چت WebRTC.

مرتبط با. 0 همسالان

2. main.js.

2.0. دریافت لینک به آیتم های صفحه و رابط WebRTC
var chatlog \u003d document.getElementbyid ("Chatlog")؛ var message \u003d document.getElementbyid ("پیام")؛ var connection_num \u003d document.getElementbyid ("connection_num")؛ var room_link \u003d document.getElementbyid ("Room_Link")؛

ما هنوز باید از پیشوند های مرورگر برای دسترسی به رابط های WebRTC استفاده کنیم.

var peerconnection \u003d window.mozrtcpeerconnection || window.webkitrtcpeerconnection؛ var sessiondescription \u003d window.mozrtcsessiondescription || window.rtcsessiondescription؛ var opecandidate \u003d window.mozrtcicecandidate || window.rtcicecandidate؛

2.1. شناسه تعریف اتاق

در اینجا ما نیاز به یک تابع برای تولید یک شناسه منحصر به فرد اتاق و کاربر. ما از این اهداف از Uuid استفاده خواهیم کرد.

تابع uuid () (بازگشت Math.Floor () (math.random () * 0x10000) .tostring (16)؛) بازگشت S4 () + S4 () + "-" + S4 () + "-" + S4 () + "-" + S4 () + "-" + S4 () + S4 () + S4 ()؛)

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

var room \u003d location.hash.substr (1)؛ اگر (اتاق) (اتاق \u003d uuid ()؛) room_link.innerhtml \u003d "لینک به اتاق"؛ var me \u003d uuid ()؛

2.2. Websocket

بلافاصله هنگام باز کردن صفحه، شما به سرور سیگنال ما متصل خواهید شد "Y، یک درخواست برای ورود به اتاق ارسال کنید و پیام های پیام را مشخص کنید.

// ما مشخص می کنیم که زمانی که پیامی را که شما نیاز دارید، باید سرور را به Socket \u003d io.connect ("" ارسال کنید ("همگام سازی قطع در بارگیری": درست است))؛ Socket.on ("Webrtc"، Socketreceive)؛ socket.on ("جدید"، socketnewpeer)؛ // بلافاصله یک درخواست برای ورود به Socket.emit اتاق ("اتاق"، JSON.Stringify ((شناسه: من، اتاق: اتاق)) ارسال کنید. // تابع کمکی برای ارسال پیام های آدرس مرتبط با WEBRTC تابع SendViasocket (نوع، پیام، به) (Socket.emit ("WebRTC"، JSON.Stringify ((ID: من، به: به، نوع: نوع، داده ها: پیام) ))))

2.3. تنظیمات Peerconnection

اکثر ارائه دهندگان اینترنت را از طریق NAT ارائه می دهند. به همین دلیل، اتصال مستقیم به این موضوع اهمیتی ندارد. هنگام ایجاد یک اتصال، ما باید لیستی از stun را مشخص کنیم و سرورهای را روشن کنیم که مرورگر سعی می کند از NAT استفاده کند. ما همچنین یک جفت گزینه اضافی برای اتصال را مشخص می کنیم.

var server \u003d (icerervers: [URL: "stun: 23.21.150.121")، (URL: "stun: stun.l.google.com: 19302")، (URL: "نوبت: numb.viagenie.ca"، اعتبار : "رمز عبور شما اینجاست"، نام کاربری: " [ایمیل محافظت شده]")]))؛ var options \u003d (اختیاری: [dtlssrtpkeyageRemention: true)، // مورد نیاز برای اتصال بین Chrome و فایرفاکس (RTPDatachannels: true) // مورد نیاز در فایرفاکس برای استفاده از Datachannels API])

2.4 اتصال یک کاربر جدید

هنگامی که یک جشن جدید به اتاق اضافه می شود، سرور به ما پیام می فرستد. جدید. با توجه به پیام های پیام مشخص شده در بالا، یک تابع تماس می گیرد. socketnewpeer.

var peers \u003d ()؛ تابع socketnewpeer (داده ها)؛ // ایجاد یک اتصال جدید var PC \u003d جدید PECIVENECTION (سرور، گزینه ها)؛ // initializing initconnection (PC، Data، "پیشنهاد")؛ // PIR را در لیست peers.Connection نگه دارید PC؛ // ایجاد datachannel که کانال var کانال \u003d pc.createdatatachannel ("mychannel"، ())؛ channel.owner \u003d داده ها؛ peers.channel \u003d کانال؛ // نصب رویداد Handlers کانال اتصال (کانال)؛ // ایجاد SDP پیشنهاد PC.CreateOffer (عملکرد (پیشنهاد))؛) تابع initConnection (PC، ID، SDPTYPE) (PC.ONICECANDIDATE \u003d fUNCTION (رویداد) (اگر (event.candidate) (// / / هنگامی که یخ جدید کاندیدایی شناسایی می شود، آن را اضافه کنید لیست برای ارسال بیشتر peers.candidatecache.push (event.candidate)؛) else (// هنگامی که تشخیص نامزدی تکمیل می شود، دستگیره دوباره نامیده می شود، اما بدون نامزد // در این مورد ما یک ترس از اولین پیشنهاد SDP ارسال می کنیم یا پاسخ SDP (بسته به پارامتر تابع) ... SendViasocket (SDPtype، PC.Localdescription، ID)؛ // ... و سپس همه قبلا نامزدهای یخ را پیدا کرده اند (Var I \u003d 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 += "

همکار می گوید: "+ E.DATA +"
"; }; }

2.5. SDP پیشنهاد، پاسخ SDP، نامزد یخ

پس از دریافت یکی از این پیام ها، دستگیره پیام مربوطه را فراخوانی کنید.

تابع socketreceived (داده ها) (داده ها)؛ سوئیچ (JSON.Type) (نامزد) (JSON.ID، JSON.DATA)؛ شکستن؛ مورد "پیشنهاد": RemoteOfferreceed (JSON ID، JSON.DATA)؛ شکستن؛ مورد " پاسخ ": Remoteanswerreceive (JSON.ID، JSON.DATA)؛ شکستن؛))

پیشنهاد 2.5.0 SDP.
تابع RemoteOffeceiveIved (ID، داده ها) (Createconnection (ID)؛ var pc \u003d peers.connection؛ pc.setremotedesription (داده ها)؛ pc.createanswer (تابع (پاسخ)؛))؛) عملکرد Createconnection (ID) (ID) (peers \u003d\u003d\u003d undefined) (peers \u003d (candidateCache :)؛ var pc \u003d جدید peerconnection (سرور، گزینه ها)؛ initConnection (PC، ID، "پاسخ")؛ peers.connection \u003d pc؛ pc.ondatachannel \u003d function (e ) (peers.channel \u003d e.channel؛ peers.channel.owner \u003d id؛ begentevents (peers.channel)؛)))
2.5.1 پاسخ SDP.
تابع Remoteanswerreceived (شناسه، داده ها) (var pc \u003d peers.connection؛ pc.setremotedesription (sessiondescription جدید (داده ها))؛)
2.5.2 نامزد یخ.
تابع RemoteCandidateReced (ID، DATA) (CREATECONNECTION (ID)؛ var pc \u003d peers.connection؛ pc.addiCandidate (icecandidate جدید (داده ها)؛)
2.6. ارسال یک پیام

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

هدف از این مقاله بر روی نمونه تظاهرات چت ویدئویی همکار (چت ویدئویی P2P) است تا با ساختار و اصل کار خود آشنا شود. برای این منظور، ما از نمونه تظاهرات چند کاربره ای از چت ویدئویی Webrtc.io-Demo استفاده می کنیم. این را می توان با مرجع دانلود کرد: https://github.com/webrtc/webrtc.io-demo/tree/master/site.

لازم به ذکر است که Github یک وب سایت یا خدمات وب برای توسعه مشترک پروژه های وب است. در توسعه دهندگان فناوری اطلاعات می توانند کدهای تحولات خود را قرار دهند، آنها را مورد بحث قرار دهند و با یکدیگر ارتباط برقرار کنند. علاوه بر این، برخی از شرکت های عمده فناوری اطلاعات، مخازن رسمی خود را در این سایت قرار می دهند. این سرویس برای پروژه های منبع باز رایگان است. GitHub مخزن کتابخانه های کتابخانه، کد منبع آزاد است.

بنابراین، از GitHub یک نمونه تظاهرات از یک چت ویدئویی همکار دانلود شده، برای ارسال روی دیسک با یک کامپیوتر شخصی در دایرکتوری ایجاد شده برای برنامه ما "WebRTC_DEMO".


شکل. یک

به شرح زیر از ساختار (شکل 1)، چت ویدئویی همکار متشکل از Client Script.js و Server Server.js اسکریپت ها در زبان برنامه نویسی جاوا اسکریپت اجرا می شود. اسکریپت (کتابخانه) webrtc.io.js (client) - ارتباطات زمان واقعی بین مرورگرهای peer به نام را فراهم می کند: "مشتری مشتری"، و webrtc.i.js (client) و webrtc.i.js (سرور) با استفاده از پروتکل WebSocket، یک اتصال دوبلکس بین مرورگر و سرور وب سرور معماری سرویس گیرنده ارائه دهید.

اسکریپت WebRTC.io.js (سرور) وارد کتابخانه WebRTC.io می شود و در فهرست Node_Modules \\ WeBrtc.io \\ Lib قرار دارد. رابط کاربری چت ویدئویی index.html در HTML5 و CSS3 اجرا می شود. محتویات فایل های کاربردی WebRTC_DEMO را می توان یکی از سردبیران HTML مانند "Notepad ++" را مشاهده کرد.

اصل چت ویدئویی در سیستم فایل PC بررسی خواهد شد. برای شروع سرور (server.js) بر روی کامپیوتر، شما باید زمان اجرا node.js را تنظیم کنید. node.js به شما اجازه می دهد که جاوا اسکریپت را خارج از مرورگر اجرا کنید. شما می توانید node.js را با مرجع دانلود کنید: http://nodejs.org/ (نسخه v0.10.13 در تاریخ 07/15/13). در صفحه اصلی وب سایت node.org، روی دکمه دانلود کلیک کنید و به http://nodejs.org/download/ بروید. برای کاربران ویندوز، ابتدا win.installer (.msi) را دانلود کنید، سپس Win.installer (.msi) را بر روی کامپیوتر اجرا کنید و NodeJS و "NPM Package Manager" را در دایرکتوری فایل های برنامه نصب کنید.




شکل. 2

بنابراین، node.js شامل توسعه کد جاوا اسکریپت و محیط اجرایی، و همچنین از مجموعه ای از ماژول های داخلی است که می تواند با استفاده از یک مدیر یا مدیر بسته NPM نصب شود.

برای نصب ماژول، لازم است فرمان را بر روی خط فرمان از دایرکتوری برنامه اجرا کنید (به عنوان مثال، WebRTC_DEMO): npm install name_module. در طول فرآیند نصب، ماژول های مدیریت NPM، پوشه Node_Modules را در دایرکتوری که نصب انجام شد، ایجاد می کند. در فرآیند عملیات، NodeJs به طور خودکار ماژول ها را از دایرکتوری node_modules متصل می کند.

بنابراین، پس از نصب node.js، ما خط فرمان را باز می کنیم و ماژول اکسپرس را در پوشه پوشه node_modules weebrtc_demo با استفاده از مدیر بسته NPM به روز رسانی می کنیم:

C: \\ webrtc_demo\u003e NPM نصب اکسپرس

ماژول اکسپرس یک چارچوب وب برای node.js یا یک پلت فرم وب برای توسعه برنامه ها است. برای دسترسی جهانی به اکسپرس، می توانید آن را به این ترتیب تنظیم کنید: npm install -g express.

سپس ماژول webrtc.io را به روز رسانی می کنیم:

C: \\ webrtc_demo\u003e npm install webrtc.io

سپس در خط فرمان، سرور را راه اندازی کنید: server.js:

C: \\ weebrtc_demo\u003e node server.js


شکل. 3

همه، سرور با موفقیت کار می کند (شکل 3). در حال حاضر، با استفاده از یک مرورگر وب، می توانید با سرور بالای آدرس IP تماس بگیرید و صفحه وب index.html را دانلود کنید که مرورگر وب کد اسکریپت مشتری را بازیابی می کند - Script.js و کد WebRTC.IO. کد اسکریپت JS، و آنها را انجام دهید. برای عملیات چت ویدئویی همکار (برای نصب اتصال بین دو مرورگر)، از دو مرورگره که WebRTC پشتیبانی می کنند، لازم است، با آدرس IP به سرور سیگنال در حال اجرا بر روی node.js تماس بگیرید.

به عنوان یک نتیجه، رابط کاربری بخش مشتری از برنامه ارتباطی (چت ویدئویی) با درخواست برای حل دسترسی به محوطه و میکروفون باز می شود (شکل 4).



شکل. چهار

پس از کلیک کردن بر روی دکمه "اجازه"، دوربین و میکروفون برای ارتباطات چند رسانه ای متصل می شوند. علاوه بر این، از طریق رابط چت ویدئویی می تواند با داده های متنی ارتباط برقرار شود (شکل 5).



شکل. پنج

لازم به ذکر است که. سرور هشدار است و عمدتا طراحی شده است تا ارتباط بین مرورگرهای کاربر را تنظیم کند. برای سرور سرور server.js server، ارائه آلارم WebRTC، از node.js استفاده می کند.

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

Webrtc

معرفی

WebRTC - فن آوری مرورگر گرا که به شما اجازه می دهد تا دو مشتری را برای انتقال داده های ویدئویی متصل کنید. ویژگی های اصلی - پشتیبانی داخلی از مرورگرها (من به تکنولوژی های نوع شخص ثالث نیاز ندارم فلاش ادوبی) و توانایی اتصال مشتریان بدون استفاده از سرورهای اضافی - اتصال نظیر به نظیر (به علاوه، p2P).

ایجاد یک اتصال p2P - یک کار دشوار دشوار است، زیرا کامپیوترها همیشه عمومی نیستند پی آدرس، یعنی آدرس در اینترنت. با توجه به مقدار کمی IPv4 آدرس ها (و برای اهداف امنیتی) مکانیسم توسعه یافت ناتکه به شما اجازه می دهد شبکه های خصوصی را ایجاد کنید، به عنوان مثال، برای استفاده از خانه. بسیاری از روترهای خانگی در حال حاضر پشتیبانی می شوند. نات و با تشکر از این، تمام دستگاه های خانگی به اینترنت دسترسی دارند، هرچند ارائه دهندگان اینترنت معمولا یکی را ارائه می دهند پی نشانی. عمومی پی آدرس ها در اینترنت و یادداشت های خصوصی منحصر به فرد هستند. بنابراین اتصال p2P - دشوار.

به منظور درک بهتر آن، سه موقعیت را در نظر بگیرید: هر دو گره در همان شبکه هستند (تصویر 1)هر دو گره در شبکه های مختلف (یکی در خصوصی، دیگر در عموم) (شکل 2) و هر دو گره در شبکه های خصوصی مختلف با همان هستند پی آدرس ها (شکل 3).

شکل 1: هر دو گره در همان شبکه

شکل 2: گره ها در شبکه های مختلف (یکی از خصوصیات، دیگر در عموم)

شکل 3: گره ها در شبکه های خصوصی مختلف، اما با آدرس های عددی برابر

در ارقام بالاتر از حرف اول در علامت نمادین دو علامت به معنی نوع واحد (p \u003d همکار، r \u003d. روتر.) در اولین نقاشی، وضعیت مطلوب است: گره ها در شبکه آنها کاملا توسط شبکه شناسایی می شوند پی آدرس ها و بنابراین می توانند به طور مستقیم به یکدیگر متصل شوند. در طراحی دوم ما دو شبکه مختلف داریم که دارای تعداد مشابهی از گره ها هستند. در اینجا روترها (روترها) هستند که دارای دو رابط شبکه هستند - در داخل شبکه و خارج از شبکه خود. بنابراین آنها دو نفر دارند پی آدرس ها. گره های متعارف تنها یک رابط دارند که از طریق آن می توانند تنها در شبکه خود ارتباط برقرار کنند. اگر آنها اطلاعات را به شخص خارج از شبکه خود انتقال دهند، فقط با نات در داخل روتر (روتر) و به همین دلیل برای دیگران قابل مشاهده است پی آدرس روتر آنهاست خارجی پی نشانی. بنابراین گره p1 وجود دارد داخلی پی = 192.168.0.200 و خارجی پی = 10.50.200.5 علاوه بر این، آخرین آدرس نیز برای تمام گره های دیگر در شبکه خود نیز خارجی خواهد بود. وضعیت مشابه و برای یک گره p2.. بنابراین، اتصال آنها غیرممکن است اگر آنها فقط از درونی خود استفاده کنند (خودشان) پی آدرس ها. شما می توانید از آدرس های خارجی استفاده کنید، یعنی آدرس های روتر، اما، از آنجا که تمام گره ها در یک شبکه خصوصی، همان آدرس خارجی بسیار دشوار است. این مشکل با استفاده از مکانیسم حل می شود نات

چه اتفاقی خواهد افتاد اگر ما هنوز تصمیم به اتصال گره ها از طریق آدرس های داخلی خود را؟ داده ها فراتر از شبکه نیستند. برای افزایش این اثر، می توانید وضعیتی را که در آخرین شکل نشان داده شده تصور کنید - در هر دو گره آدرس های داخلی را همزمان می کند. اگر آنها از آنها برای ارتباط استفاده می کنند، هر گره با خود ارتباط برقرار خواهد کرد.

Webrtc با موفقیت با چنین مشکلی با استفاده از پروتکل مقابله می کند یخ، که درست است، نیاز به استفاده از سرورهای اضافی دارد ( ببخشید, دور زدن) در مورد این همه زیر.

دو مرحله Webrtc.

برای اتصال دو گره از طریق پروتکل Webrtc (یا به سادگی rtcاگر دو مورد اتصال باشند آی فون.'الف) لازم است برخی از اقدامات اولیه برای ایجاد یک اتصال انجام شود. این مرحله اول است - تنظیم اتصال. مرحله دوم انتقال داده های ویدئویی است.

بلافاصله ارزش این است که، حداقل تکنولوژی Webrtc در کار خود از راه های مختلفی برای برقراری ارتباط استفاده می کند ( TCP و UDP) و تغییر انعطاف پذیر بین آنها، این تکنولوژی پروتکل برای انتقال داده های اتصال ندارد. بعد از همه تعجب آور نیست، دو گره را وصل کنید p2P نه خیلی آسان بنابراین، لازم است برخی از آنها اضافی روش انتقال داده ها، به هیچ وجه مرتبط با آن نیست Webrtc. این می تواند یک انتقال سوکت، پروتکل باشد httpاین ممکن است حتی یک پروتکل باشد SMTP یا پست روسی این مکانیسم انتقال اولیه داده ها نامیده می شود علامت. شما باید اطلاعات زیادی را گذراندید. تمام داده ها به عنوان متن منتقل می شوند و به دو نوع تقسیم می شوند - SDP. و نامزد یخ. نوع اول برای ایجاد یک ترکیب منطقی و دوم برای فیزیکی استفاده می شود. در جزئیات در مورد این همه بعدا، اما تنها مهم است که به یاد داشته باشید که Webrtc این به ما اطلاعاتی را ارائه می دهد که باید به گره دیگری منتقل شود. به محض این که ما تمام اطلاعات لازم را ارائه می دهیم، گره ها قادر به اتصال هستند و دیگر نیازی به کمک ما ندارند. بنابراین، مکانیسم سیگنال ما باید پیاده سازی کنیم بصورت جداگانه، استفاده خواهد شد فقط زمانی که متصل است، و هنگام انتقال داده های ویدئویی استفاده نمی شود.

بنابراین، مرحله اول را در نظر بگیرید - فاز اتصال اتصال. این شامل چندین مورد است. این مرحله را برای اولین بار در نظر بگیرید که اتصال را آغاز می کند، و سپس برای انتظار.

  • آغازگر (تماس گیرنده - تماس گیرنده):
    1. ارائه انتقال اطلاعات ویدئو (CreateOffer)
    2. به دست آوردن شما SDP. SDP.)
    3. گرفتن شما نامزد یخ نامزد یخ)
  • تماس انتظار ( callee):
    1. گرفتن یک جریان رسانه محلی (شما) و نصب آن برای انتقال (GetusermediaStream)
    2. گرفتن حکم برای شروع داده های انتقال ویدئو و ایجاد یک پاسخ (Createanswer)
    3. به دست آوردن شما SDP. شی و انتقال از طریق مکانیسم سیگنال ( SDP.)
    4. گرفتن شما نامزد یخ اشیاء و عبور آنها را از طریق مکانیسم سیگنال ( نامزد یخ)
    5. گرفتن جریان رسانه ای از راه دور (بیگانه) و نمایش آن بر روی صفحه نمایش (Onadstream)

تفاوت فقط در پاراگراف دوم.

علیرغم سردرگمی به نظر می رسد از مراحل در اینجا، در واقع سه وجود دارد: ارسال جریان رسانه ای خود (بند 1)، تنظیم پارامترهای ترکیب (PP.2-4)، به دست آوردن جریان دیگران (P.5). پیچیده ترین مرحله دوم است، زیرا این شامل دو بخش است: استقرار فیزیکی و منطقی اتصالات اولین نشان می دهد مسیراز طریق آن بسته ها باید از یک گره شبکه به دیگری بروند. دوم نشان می دهد پارامترهای ویدئو / صوتی - چه چیزی از کیفیت برای استفاده از کدک استفاده می کند.

مرحله ذهنی createoffer یا createanswer این باید به مراحل انتقال متصل شود SDP. و نامزد یخ اشیاء.

اسانس اصلی

جریان های رسانه ای (MediaStream)

ماهیت اصلی جریان رسانه ای است، یعنی جریان ویدئو و داده های صوتی، تصویر و صدا. جریان رسانه ها دو نوع هستند - محلی و حذف شده است. محلی اطلاعات را از دستگاه های ورودی (دوربین، میکروفون) دریافت می کند و از راه دور بر روی شبکه استفاده می کند. بنابراین، هر گره یک جریان محلی و از راه دور دارد. که در Webrtc برای جریان ها یک رابط وجود دارد رسانه ها و همچنین یک زیر مربع وجود دارد localmediastream به خصوص برای شار محلی. که در جاوا اسکریپت شما فقط می توانید با اولین بار برخورد کنید، و اگر شما استفاده کنید لقمهسپس شما می توانید با دوم مواجه شوید.

که در Webrtc یک سلسله مراتب گیج کننده در داخل جریان وجود دارد. هر موضوع ممکن است شامل چندین آهنگ رسانه ای باشد ( مدیره)، که به نوبه خود می تواند از چندین کانال رسانه ای تشکیل شود ( mediachannel) و رسانه های رسانه ای نیز ممکن است تا حدودی باشند.

همه چیز را در نظر بگیرید. برای این ما نمونه ای را در ذهن داریم. فرض کنید که ما می خواهیم نه تنها ویدیو از خودمان را انتقال دهیم، بلکه ویدیوی میز ما را نیز انتقال می دهیم، که یک قطعه کاغذی که در آن ما می خواهیم چیزی بنویسیم. ما به دو فیلم (ما + جدول) و یک صوتی (ما) نیاز داریم. واضح است که ما و جدول باید به جریان های مختلف تقسیم شوند، زیرا این داده ها احتمالا به یکدیگر وابسته اند. بنابراین ما دو نفر خواهیم داشت رسانه ها'A یکی برای ما و یکی برای جدول است. اولین بار شامل داده های ویدئویی و صوتی خواهد بود، و دوم تنها ویدیو است (شکل 4).

شکل 4: دو جریان رسانه های مختلف. یکی برای ما یکی برای جدول ما

بلافاصله واضح است که جریان رسانه حداقل باید شامل توانایی حاوی داده ها از انواع مختلف - ویدئو و صوتی باشد. این در تکنولوژی مورد توجه قرار گرفته است و بنابراین هر نوع داده از طریق مسیر رسانه ای اجرا می شود مدیره. مسیر رسانه دارای دارایی خاص است. نوع.که تعیین می کند که در مقابل ما - ویدئو یا صوتی (شکل 5)

شکل 5: جریان رسانه ها شامل مسیرهای رسانه ای است

چگونه همه چیز در برنامه اتفاق می افتد؟ ما دو جریان رسانه ای را ایجاد خواهیم کرد. سپس دو آهنگ ویدئویی و یک آهنگ صوتی ایجاد کنید. ما به دوربین ها و میکروفون دسترسی داریم. ما هر آهنگ را مشخص می کنیم که دستگاه مورد استفاده قرار می گیرد. یک ویدئو و آهنگ صوتی را به جریان رسانه اول و آهنگ ویدئویی از دوربین دیگری در جریان رسانه دوم اضافه کنید.

اما چگونه می توانیم جریان رسانه ها را در انتهای دیگر ارتباط متمایز کنیم؟ برای این، هر جریان رسانه دارای دارایی است. برچسب - علامت جریان، نام آن (شکل 6). اموال مشابه یک مسیر رسانه ای دارد. اگر چه در نگاه اول به نظر می رسد که ویدئو از صدا می تواند به روش های دیگر متمایز باشد.

شکل 6: جریان رسانه ها و آهنگ ها توسط برچسب ها شناسایی می شوند

بنابراین، و اگر آهنگ های رسانه ای را می توان پس از برچسب شناسایی کرد، پس چرا باید از دو جریان رسانه ای برای مثال ما استفاده کنیم، به جای آن؟ پس از همه، شما می توانید یک جریان رسانه را انتقال دهید، و آهنگ ها از مسیرهای مختلف استفاده می کنند. ما به اموال مهم جریان رسانه ها رسیدیم - آنها همزمان کردن مسیرهای رسانه ای جریان های رسانه های مختلف با یکدیگر هماهنگ نیستند، اما در هر رسانه جریان همه آهنگ ها بازی در همان زمان.

بنابراین، اگر ما می خواهیم کلمات ما، احساسات ما بر روی صورت و ورق های ما از کاغذ در همان زمان تولید می شود، ارزش استفاده از یک جریان رسانه ای است. اگر این خیلی مهم نیست، پس از استفاده از جریان های مختلف سودمندتر است - تصویر صاف تر خواهد بود.

اگر برخی از آهنگ ها باید در حین انتقال قطع شوند، می توانید از اموال استفاده کنید. فعال شده است مسیرهای رسانه ای

در نهایت ارزش دارد در مورد صدای استریو. همانطور که می دانید، صدای استریو دو صدای مختلف است. و لازم است آنها را به طور جداگانه انتقال دهید. برای انجام این کار، کانال ها استفاده می شود. mediachannel. مسیر صدا رسانه می تواند کانال های بسیاری داشته باشد (به عنوان مثال، 6، اگر شما نیاز به یک صدا 5 + 1). البته در داخل کانال های مسیر رسانه ها نیز وجود دارد همزمان. برای ویدیو، تنها یک کانال معمولا استفاده می شود، اما برای مثال، چندین، برای تبلیغات استفاده می شود.

خلاصه: ما از جریان رسانه ای برای انتقال داده های ویدئویی و صوتی استفاده می کنیم. در داخل هر جریان رسانه، داده ها هماهنگ می شوند. ما می توانیم از چندین جریان رسانه ای استفاده کنیم اگر ما به هماهنگ سازی نیاز نداریم. در داخل هر جریان رسانه، یک مسیر رسانه ای از دو نوع وجود دارد - برای ویدئو و برای صدا. آهنگ ها معمولا بیش از دو نفر نیستند، اما شاید بیشتر اگر شما نیاز به انتقال چندین فیلم مختلف (مخاطب و جداول آن) دارید. هر آهنگ ممکن است شامل چندین کانال باشد که معمولا برای صدای استریو استفاده می شود.

در ساده ترین وضعیت چت ویدئویی، ما یک جریان رسانه محلی داریم که شامل دو آهنگ - آهنگ های ویدئویی و آهنگ های صوتی است که هر کدام از آنها از یک کانال اصلی تشکیل شده است. آهنگ ویدئویی مسئول دوربین است، آهنگ صوتی در هر میکروفون است، و جریان رسانه ها ظرف آنها هر دو است.

توصیفگر جلسه (SDP)

کامپیوترهای مختلف همواره دوربین های مختلف، میکروفون، کارت های ویدئویی و سایر تجهیزات را دارند. پارامترهای بسیاری وجود دارد که آنها دارای آنها هستند. این همه باید برای انتقال داده های رسانه ای بین دو گره شبکه هماهنگ شود. Webrtc آیا آن را به طور خودکار و ایجاد یک شیء خاص - توصیف جلسه SDP.. این شی را به گره دیگری منتقل کنید و می توانید داده های رسانه ای را انتقال دهید. فقط با اتصال با گره دیگری هنوز نیست.

برای انجام این کار، از هر مکانیسم سیگنالینگ استفاده کنید. SDP. شما می توانید حداقل از طریق سوکت، حداقل یک فرد (آن را با یک گره دیگر از طریق تلفن مطلع کنید)، حتی از طریق پست الکترونیکی روسیه. همه چیز بسیار ساده است - شما آماده خواهید شد SDP. و باید فرستاده شود و هنگام دریافت در طرف دیگر - انتقال به بخش Webrtc. دسته جلسه به عنوان متن ذخیره می شود و می تواند در برنامه های خود تغییر کند، اما به عنوان یک قاعده، لازم نیست. به عنوان مثال، هنگام اتصال، دسکتاپنفن گاهی اوقات مورد نیاز است که مجبور شود کدک صوتی مورد نظر را انتخاب کند.

معمولا، زمانی که اتصال تنظیم شده است، باید بعضی از آدرس ها را مشخص کنید، به عنوان مثال url. برای این نیازی نیست، زیرا از طریق مکانیسم سیگنالینگ شما خودتان اطلاعات مقصد را ارسال می کنید. برای نشان دادن Webrtcآنچه ما می خواهیم نصب کنیم p2P اتصال شما می خواهید با عملکرد CreateOffer تماس بگیرید. پس از فراخوانی این ویژگی و دستورالعمل به ویژه او فراخوانی'A ایجاد خواهد شد SDP. شی و انتقال به همان فراخوانی. همه چیزهایی که از شما مورد نیاز است این است که این شی را بر روی شبکه به گره دیگری (مخاطب) انتقال دهید. پس از آن، در انتهای دیگر، داده ها از طریق مکانیسم سیگنال، یعنی این، آمده است SDP. یک شیء این جلسه جلسه برای این گره شخص دیگری است و بنابراین اطلاعات مفید را حمل می کند. گرفتن این شی یک سیگنال به ابتدای اتصال است. بنابراین، شما باید به این موافقت کنید و با عملکرد Createanswer تماس بگیرید. او یک آنالوگ کامل از CreateOffer است. دوباره در شما فراخوانی یک توصیف جلسه محلی منتقل خواهد شد و برای انتقال به مکانیسم سیگنالینگ ضروری است.

شایان ذکر است که تنها پس از دریافت شخص دیگری، امکان تماس با عملکرد Createanswer وجود دارد SDP. هدف - شی. چرا؟ از آنجا که محلی SDP. شی که هنگام تماس Createingser تولید می شود، باید بر روی راه دور تکیه شود SDP. یک شیء فقط در این مورد ممکن است تنظیمات ویدئو خود را با تنظیمات مخاطب هماهنگ کنید. این نیز ارزش Createanswer و CreateOffer را قبل از دریافت جریان رسانه محلی ندارد - آنها چیزی برای نوشتن ندارند SDP. یک شیء

به عنوان B. Webrtc ممکن است ویرایش شود SDP. شی، پس از دریافت توصیفگر محلی، باید نصب شود. ممکن است کمی عجیب و غریب به نظر می رسد که شما باید انتقال دهید Webrtc این واقعیت که او خودش را به ما داد، اما پروتکل. هنگامی که یک توصیفگر از راه دور دریافت می کنید، باید نصب شود. بنابراین، شما باید دو توصیفگر را در یک گره نصب کنید - خودتان و شخص دیگری (یعنی محلی و راه دور).

بعد از این دست زدن به گره ها در مورد خواسته های یکدیگر می دانند. به عنوان مثال، اگر گره 1 پشتیبانی از کدک ها آ. و بو گره 2 پشتیبانی از کدک ها ب و C.، از آنجا که هر گره می داند توصیفگرهای خود و شخص دیگری، هر دو گره یک کدک را انتخاب می کنند ب (شکل 7). منطق اتصال در حال حاضر نصب شده است، و جریان رسانه ها می تواند منتقل شود، اما مشکل دیگری وجود دارد - گره ها هنوز هم با یک مکانیزم سیگنالینگ مرتبط هستند.


شکل 7: هماهنگی کدک

نامزدهای (نامزد یخ)

فن آوری Webrtc تلاش می کند تا ما را با روش جدید خود اشتباه بگیرد. هنگامی که اتصال نصب شده است، آدرس این گره مشخص نیست که شما نیاز به اتصال دارید. نصب شده اول منطقی اتصال و نه فیزیکیاگر چه همیشه بر خلاف آن انجام شد. اما اگر فراموش نکنید ما از مکانیسم سیگنالینگ شخص ثالث استفاده می کنیم عجیب نیست.

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

از طریق برخی فراخوانیWebrtc به ما بگو نامزد یخ اشیاء. آنها همچنین در فرم متن قرار می گیرند و همچنین، همانطور که با توصیفگرهای جلسه، آنها باید به سادگی از طریق مکانیسم سیگنالینگ به جلو حرکت کنند. اگر توصیف جلسه شامل اطلاعات مربوط به تاسیسات ما در سطح اتاق و میکروفون باشد، نامزدها حاوی اطلاعاتی درباره مکان ما در شبکه هستند. انتقال آنها را به گره دیگری، و او قادر خواهد بود از لحاظ جسمی با ما ارتباط برقرار کند، و از آنجایی که قبلا یک توصیفگر جلسه دارد، منطقی قادر به اتصال و داده "جریان" است. اگر او را فراموش نکنید، ما و هدف خود را از نامزد ارسال نمی کند، یعنی اطلاعاتی در مورد جایی که او در شبکه خود است، ما می توانیم با آن ارتباط برقرار کنیم. توجه داشته باشید در اینجا یک تفاوت دیگر از تعامل کلاسیک مشتری-سرور. ارتباط با سرور HTTP بر اساس طرح پاسخ پرس و جو رخ می دهد، مشتری داده ها را به سرور ارسال می کند، او آنها را پردازش می کند و آنها را می فرستد آدرس مشخص شده در بسته درخواست. که در Webrtc نیاز به دانستن دو آدرس و آنها را از هر دو طرف متصل کنید.

تفاوت از توصیفگرهای جلسه این است که تنها نامزدهای از راه دور مورد نیاز است. ویرایش در اینجا ممنوع است و نمی تواند هیچ مزیتی را به ارمغان بیاورد. در برخی پیاده سازی ها Webrtc کاندیداها باید پس از نصب توصیفگرهای جلسه نصب شوند.

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

بنابراین، دو گره در یک شبکه مشابه هستند (شکل 8). چگونه آنها را شناسایی کنیم؟ از طريق پی آدرس ها. راه دیگری نیست. درست است، شما هنوز هم می توانید از حمل و نقل های مختلف استفاده کنید ( TCP و UDP) و پورت های مختلف. این اطلاعاتی است که در هدف کاندیدای موجود است - پی, بندر., حمل و نقل و برخی دیگر. به عنوان مثال، استفاده می شود UDP حمل و نقل I. 531 بندر.

شکل 8: دو گره در همان شبکه هستند.

سپس، اگر ما در گره هستیم p1T. Webrtc به ما یک هدف از کاندید بدهید - . در اینجا فرمت دقیق وجود ندارد، اما فقط یک طرح است. اگر ما در گره هستیم p2.، سپس نامزد است . از طریق مکانیسم زنگ p1 دریافت نامزد p2. (این مکان گره است p2.، یعنی او پی و بندر.) سپس p1 می تواند اتصال S. p2. به طور مستقیم. درست تر، p1 داده ها را به آدرس ارسال می کند 10.50.150.3:531 امیدوارم که آنها برسند p2.. مهم نیست که این آدرس متعلق به گره باشد p2. یا برخی از واسطه. فقط مهم است که از طریق این آدرس آدرس ارسال شود و می تواند به دست آورد p2..

در حالی که گره ها در همان شبکه - همه چیز ساده و آسان است - هر گره تنها یک هدف از نامزد دارد (همیشه به معنای خودش، یعنی موقعیت آن در شبکه) است. اما کاندیداها بسیار بیشتر خواهد بود زمانی که گره ها در آن خواهند بود ناهمسان شبکه های.

بگذارید به یک رویداد پیچیده تر تبدیل شویم. یک گره پشت روتر (دقیق تر، برای NAT) خواهد بود، و گره دوم در همان شبکه با این روتر (به عنوان مثال، در اینترنت) خواهد بود (شکل 9).

شکل 9: یک گره برای NAT، دیگر

این مورد یک راه حل خاص برای مشکل ما در حال حاضر و در نظر گرفتن. روتر خانگی معمولا شامل یک میز است نات. این یک مکانیسم خاص طراحی شده است تا اطمینان حاصل شود که گره ها در داخل شبکه خصوصی روتر می توانند به عنوان مثال، به وب سایت ها اداره کنند.

فرض کنید که سرور وب به طور مستقیم به اینترنت متصل است، یعنی، عمومی است پی* نشانی. اجازه دهید آن گره باشد p2.. گره p1 (وب سایت) ارسال درخواست برای آدرس 10.50.200.10 . اول، داده ها بر روی روتر می افتد r1، یا نه به او داخلی رابط 192.168.0.1 . پس از آن، روتر آدرس منبع را به یاد می آورد (آدرس p1) و وارد آن به یک جدول خاص می شود نات، سپس آدرس منبع را به آن تغییر دهید ( p1 r1) بعد، به شیوه خود خارجی رابط روتر به طور مستقیم به سرور وب ارسال می شود p2.. سرور وب پردازش داده ها را تولید می کند و پاسخ را ارسال می کند. روتر می فرستد r1از آنجایی که کسی است که در آدرس مخالف ایستاده است (روتر آدرس را به او جایگزین کرد). روتر داده می شود، به جدول نگاه می کند نات و این گره ها را به جلو می برد p1. روتر در اینجا به عنوان واسطه عمل می کند.

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

بازگشت به تکنولوژی Webrtc، یا به جای آن، به بخش آن استفاده می شود یخ پروتکل (از اینجا و یخ نامزدهای). گره p2. دارای یک نامزد (محل آن در شبکه - 10.50.200.10 )، و گره p1که پشت روتر با NAT دو نامزد دارد - محلی ( 192.168.0.200 ) و نامزد روتر ( 10.50.200.5 ) اول مفید نیست، اما از آن زمان تولید می شود Webrtc این چیزی را در مورد گره از راه دور نمی داند - می تواند در همان شبکه باشد، و شاید نه. نامزد دوم به صورت مفید خواهد آمد و همانطور که قبلا می دانیم، بندر نقش مهمی ایفا خواهد کرد (از طریق آن نات).

ضبط در جدول نات این تنها زمانی تولید می شود که داده ها از شبکه داخلی خارج می شوند. بنابراین گره p1 باید اولین بار برای انتقال داده ها و تنها پس از این گره باشد p2. قادر خواهد بود به گره برود p1.

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

با این حال، اگر آدرس های خارجی شناخته شده باشند، اتصال به راحتی نصب می شود. اگر اولین گره داده ها در روتر گره دوم مستقر شود، روتر آنها را نادیده می گیرد، از آنجا که میز آن است نات در حالی که خالی است با این حال، در اولین روتر گره در جدول نات یک رکورد مورد نیاز است اگر گره دوم در حال حاضر داده ها را به روتر اول گره ارسال می کند، روتر آنها را به اولین گره انتقال می دهد. حالا و جدول نات روتر دوم نیاز به داده ها دارد.

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

stun و نوبت سرور

هنگامی که مقداردهی اولیه Webrtc شما باید در دسترس قرار دهید ببخشید و دور زدن سرورهایی که در آینده نامیده می شوند یخ سرورها اگر سرورها مشخص نشده باشند، تنها گره ها را می توان در یک شبکه متصل کرد (متصل به آن بدون نات) بلافاصله لازم به ذکر است که برای 3G.- ضرورتا استفاده کنید دور زدن سرورها

ببخشید سرور - این فقط یک سرور در اینترنت است که آدرس بازگشت را بازگرداند، یعنی آدرس مجمع فرستنده. یک گره که توسط روتر درخواست می شود به ببخشید سرور برای رفتن از طریق نات. بسته بندی شده ببخشید سرور، حاوی آدرس منبع - آدرس روتر، یعنی آدرس خارجی گره ما است. این آدرس ببخشید سرور و ارسال می کند بنابراین، گره خارجی خود را می گیرد پی آدرس و پورت که از طریق آن از شبکه در دسترس است. به علاوه، Webrtc با این آدرس یک نامزد اضافی (آدرس خارجی روتر و پورت) ایجاد می کند. در حال حاضر در جدول نات روتر دارای یک ورودی است که بسته های ارسال شده به روتر را از طریق پورت مورد نظر به گره ما ارسال می کند.

این روند را در مثال قرار دهید.

مثال (سرور کار stun)

ببخشید سرور نشان داده خواهد شد s1. روتر، همانطور که قبلا، از طریق r1، و گره - از طریق p1. همچنین لازم است که جدول را دنبال کنید نات - ما آن را به عنوان r1_nat. علاوه بر این، این جدول معمولا شامل بسیاری از سوابق از گره های مختلف زیر شبکه است - آنها نمی توانند آورده شوند.

بنابراین در ابتدا یک جدول خالی داریم r1_nat.

جدول 2: هدر بسته بندی

گره p1 این روتر بسته را می فرستد r1 (مهم نیست که چگونه فن آوری های مختلف را می توان در زیر شبکه های مختلف استفاده کرد). روتر باید با آدرس منبع جایگزین شود src IPاز آنجا که آدرس مشخص شده در بسته مناسب برای زیر شبکه خارجی نیست، علاوه بر این، آدرس از این محدوده محفوظ است، و هیچ آدرس در اینترنت چنین آدرس ندارد. روتر یک جایگزین را در بسته ایجاد می کند و یک ورودی جدید را در جدول خود ایجاد می کند r1_nat. برای انجام این کار، او باید شماره پورت را کنار بگذارد. به یاد بیاورید که از آنجا که چندین گره در داخل زیر شبکه می توانند به شبکه خارجی دسترسی داشته باشند، سپس در جدول نات اطلاعات اضافی باید ذخیره شود به طوری که روتر می تواند تعیین کند که کدام یک از این گره های چندگانه بسته معکوس از سرور است. اجازه دهید روتر پورت را اختراع کند 888 .

تغییر عنوان عنوان:

جدول 4: جدول NAT با ضبط جدید دوباره پر شده است

اینجا پی آدرس و پورت برای زیر شبکه کاملا مشابه بسته منبع است. در حقیقت، هنگامی که دنده معکوس است، ما باید راهی برای بازگرداندن آنها داشته باشیم. پی آدرس شبکه خارجی آدرس روتر است و پورت به روتر اختراع شده است.

این پورت که گره است p1 اتصال را می گیرد - این، البته، 35777 اما سرور سرور در خیالی بندر 888 که توسط روتر به حال تغییر خواهد کرد 35777 .

بنابراین، روتر آدرس و بندر منبع را در هدر بسته جایگزین کرد و ورودی را به میز اضافه کرد نات. در حال حاضر بسته بیش از سرور شبکه ارسال می شود، یعنی گره s1. در ورودی s1 این چنین بسته ای دارد:

src IP بندر SRC DEST IP پورت Dest
10.50.200.5 888 12.62.100.200 6000

جدول 5: سرور Stun یک بسته دریافت کرد

جمع، ببخشید سرور می داند که او یک بسته از آدرس آمده است 10.50.200.5:888 . در حال حاضر این سرور آدرس ارسال می کند. ارزش ماندگاری و دیدن یک بار دیگر که ما فقط در نظر گرفته ایم. جداول بالا یک قطعه از سرتیتر بسته بندی نشده در همه او محتوا. ما در مورد محتوا صحبت نکردیم، زیرا این خیلی مهم نیست - به نحوی در پروتکل توصیف شده است ببخشید. در حال حاضر ما علاوه بر عنوان نیز محتوای را نیز در نظر می گیریم. این ساده خواهد بود و حاوی آدرس روتر است - 10.50.200.5:888 اگر چه ما آن را از سرتیتر بسته بندی این کار اغلب انجام نمی شود، معمولا پروتکل ها اطلاعات مهمی در مورد آدرس های گره ها مهم نیستند، فقط این مهم است که بسته ها برای هدف مورد نظر خود تحویل داده شوند. در اینجا ما پروتکل را در نظر می گیریم که مسیر بین دو گره را تنظیم می کند.

بنابراین، در حال حاضر ما یک بسته دوم داریم که در جهت مخالف می رود:

جدول 7: Stun Server یک بسته را با چنین محتوایی ارسال می کند

بعد، بسته به شبکه سفر می کند تا زمانی که معلوم شود بر روی رابط خارجی روتر باشد r1. روتر می داند که بسته به او در نظر گرفته نشده است. چگونه او را درک می کند؟ این تنها در بندر یافت می شود. بندر 888 این برای اهداف شخصی خود استفاده نمی کند، اما برای مکانیسم استفاده می شود نات. بنابراین، در این جدول، روتر به نظر می رسد. به ستون نگاه می کند پورت خارجی و به دنبال یک رشته ای است که همزمان با آن است پورت Dest از بسته ارسال شده، یعنی 888 .

IP داخلی پورت داخلی IP خارجی پورت خارجی
192.168.0.200 35777 10.50.200.5 888

جدول 8: جدول NAT

ما خوش شانس بودیم، چنین خطی وجود دارد. اگر آن را خوش شانس نبود، بسته به سادگی پرتاب می شود. حالا شما باید درک کنید که چه کسی از گره های زیر شبکه لازم است که این بسته را ارسال کنید. عجله نکنید، بگذارید اهمیت بنادر در این مکانیسم را دوباره به یاد بیاوریم. در عین حال، دو گره در زیر شبکه می توانند درخواست های شبکه خارجی را ارسال کنند. سپس، اگر روتر برای اولین گره آمد 888 ، سپس برای دوم او با بندر آمده است 889 . فرض کنید که این اتفاق افتاد، یعنی جدول r1_nat به نظر می رسد:

جدول 10: روتر آدرس گیرنده را جایگزین می کند

src IP بندر SRC DEST IP پورت Dest
12.62.100.200 6000 192.168.0.200 35777

جدول 11: روتر آدرس گیرنده را جایگزین کرد

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

بعدا چی؟ این مزایای این چیست؟ استفاده از یک رکورد در جدول است r1_nat. اگر حالا کسی به روتر ارسال کند r1 بسته با پورت 888 سپس روتر این گره بسته را هدایت می کند p1. بنابراین، یک عبور کوچک کوچک به گره پنهان ایجاد شد p1.

از مثال بالا، می توانید ایده ای از کار را دریافت کنید. نات و ذات ببخشید سرور به طور کلی، مکانیزم یخ و stun / نوبت سرورها فقط به منظور غلبه بر محدودیت ها هدف قرار می گیرند نات.

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

دور زدن سرور بهبود یافته است ببخشید سرور از اینجا باید بلافاصله آن را حذف کند دور زدن سرور می تواند کار کند و چگونه ببخشید سرور با این حال، مزایا وجود دارد. اگر یک p2P ارتباط غیرممکن است (مانند در 3G. شبکه ها)، سرور به حالت تکراری تغییر می کند ( رله)، یعنی، آن را به عنوان یک واسطه کار می کند. البته، نه p2P سپس آن را نمی بیند، اما فراتر از مکانیزم یخ گره ها فکر می کنند که آنها به طور مستقیم ارتباط برقرار می کنند.

در موارد مورد نیاز است دور زدن سرور؟ چرا کافی نیست ببخشید سرورها؟ واقعیت این است که انواع مختلفی وجود دارد نات. آنها به همان اندازه جایگزین می شوند پی آدرس و پورت، با این حال، برخی از آنها حفاظت بیشتری در برابر "جعل" دارند. به عنوان مثال، در متقارن جدول نات 2 پارامتر دیگر ذخیره می شود - پی و پورت گره از راه دور. بسته از شبکه خارجی عبور می کند نات در شبکه داخلی تنها اگر آدرس منبع و پورت همزمان با جدول ثبت شده در جدول باشد. بنابراین، تمرکز S. ببخشید سرور نتواند - جدول نات آدرس فروشگاه و پورت ببخشید سرورها و هنگامی که روتر یک بسته را دریافت می کند Webrtc این همکار، او را می کشد، همانطور که او "جعلی" است. او از آن نرفت ببخشید سرور

به این ترتیب دور زدن سرور در مورد مورد نیاز است، زمانی که هر دو interlocutors برای متقارن نات (همه به خاطر خودشان).

خلاصه ای مختصر

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

  • جریان رسانه
    • داده های ویدئویی و صوتی در جریان رسانه ها بسته بندی می شود
    • جریان رسانه ها همگام سازی آهنگ های رسانه ای است که از آن تشکیل شده است
    • جریان های رسانه های مختلف با یکدیگر هماهنگ نیستند.
    • جریانهای رسانه ای می توانند محلی و از راه دور باشند، دوربین و میکروفون معمولا به داده های دریافت شده محلی، حذف شده از شبکه در یک فرم کد شده متصل می شوند.
    • مسیرهای رسانه ای دو نوع هستند - برای ویدئو و برای صدا
    • مسیرهای رسانه ای توانایی روشن / خاموش را دارند
    • آهنگ های رسانه ای شامل کانال های رسانه ای است
    • مسیرهای رسانه ای کانال های رسانه ای را از آن تشکیل می دهند
    • جریان های رسانه ای و مسیرهای رسانه ای دارای برچسب هایی هستند که می توانند تشخیص دهند
  • جلسه توصیفگر
    • دسته جلسه به طور منطقی دو گره شبکه را متصل می کند.
    • جلسه جلسه اطلاعات را در مورد روشهای رمزگذاری ویدئو و داده های صوتی موجود ذخیره می کند.
    • Webrtc از یک مکانیزم سیگنالینگ خارجی استفاده می کند - وظیفه توزیع کننده های جلسه حمل و نقل ( sDP.) بر روی برنامه قرار می گیرد
    • مکانیسم ترکیب منطقی شامل دو مرحله است - پیشنهادات ( پیشنهاد.) و پاسخ ( پاسخ.)
    • نسل از توصیف جلسه غیر ممکن است بدون استفاده از جریان رسانه های محلی در مورد پیشنهاد ( پیشنهاد.) و بدون استفاده از یک توصیف جلسه از راه دور در صورت پاسخ ( پاسخ.)
    • توصیفگر حاصل باید رسیده باشد Webrtcعلاوه بر این، مهم نیست که آیا این توصیفگر از راه دور یا محلی از همان پیاده سازی به دست می آید یا خیر Webrtc
    • یک ویرایش کوچک از توصیفگر جلسه وجود دارد
  • نامزدهای
    • نامزد نامزد یخ) - این آدرس گره در شبکه است
    • آدرس گره می تواند شما باشد، و شاید آدرس روتر یا دور زدن سرور
    • نامزدها همیشه زیاد هستند
    • نامزد متشکل از پی آدرس، بندر و نوع حمل و نقل ( TCP یا UDP)
    • کاندیداها برای ایجاد یک اتصال فیزیکی از دو گره در شبکه استفاده می شوند.
    • کاندیداها نیز باید از طریق مکانیسم سیگنال ارسال شوند
    • نامزدها نیز باید پیاده سازی را انتقال دهند Webrtcبا این حال، تنها از راه دور
    • در برخی پیاده سازی ها Webrtc کاندیداها تنها می توانند پس از نصب توصیفگر جلسه منتقل شوند
  • stun / نوبت / یخ / nat
    • نات - مکانیزم دسترسی خارجی
    • روترهای خانگی از یک جدول ویژه پشتیبانی می کنند نات
    • روتر جایگزین آدرس ها در بسته ها می شود - آدرس منبع به خودی خود، در صورتی که بسته به شبکه خارجی می رود، آدرس گیرنده به آدرس گره در شبکه داخلی، اگر بسته از خارج آمده است شبکه
    • برای دسترسی چند کاناله به شبکه خارجی نات استفاده از پورت ها
    • یخ - مکانیسم اسکن نات
    • ببخشید و دور زدن سرورها - سرورهای وانت برای دور زدن نات
    • ببخشید سرور به شما اجازه می دهد تا ورودی های لازم را در جدول ایجاد کنید. ناتو همچنین آدرس خارجی گره را باز می گرداند
    • دور زدن سرور عمومی است ببخشید مکانیسم و \u200b\u200bهمیشه کار می کند
    • در بدترین موارد دور زدن سرور به عنوان واسطه استفاده می شود ( رله)، من p2P به ارتباط مشتری مشتری مشتری تبدیل می شود.

Webrtc (ارتباطات وب در زمان واقعی) یک تکنولوژی است که به برنامه ها و سایت های وب اجازه می دهد تا ضبط و انتقال جریان های رسانه های صوتی و / یا ویدئویی را به صورت انتخابی انتقال دهند، و همچنین داده های دلخواه خود را بین مرورگرها، بدون استفاده اجباری از واسطه ها مبادله می کنند. مجموعه ای از استانداردهای که شامل تکنولوژی WebRTC می شود، به شما اجازه می دهد تا داده ها را مبادله کنید و بدون نیاز به نصب پلاگین ها یا سایر نرم افزار های شخص ثالث، به شما تبادل داده ها را مبادله کنید.

WebRTC شامل چندین رابط کاربری متصل شده (API ها) و پروتکل هایی است که با هم کار می کنند. مستنداتی که در اینجا پیدا می کنید، به شما کمک می کند تا اصول اولیه WebRTC را درک کنید، نحوه پیکربندی و استفاده از اتصال به داده ها و جریان رسانه ها و خیلی بیشتر.

سازگاری

از آنجایی که اجرای WebRTC در حال تبدیل شدن است و هر مرورگر دارای هر دو توابع WebRTC است، ما به شدت توصیه می کنیم با استفاده از کتابخانه Adapter.js Polyfil، از Google، قبل از کار بر روی کد خود توصیه کنید.

Adapter.js از گوه ها و پلی فیلترها برای تفاوت های اتصال صاف در پیاده سازی WebRTC در میان زمینه هایی که از آن حمایت می کنند استفاده می کند. Adapter.js همچنین پیشوند تولید کنندگان را پردازش می کند و سایر تفاوت ها در خواص نامگذاری، تسهیل فرآیند توسعه در WebRTC، با نتیجه سازگار ترین. کتابخانه نیز به عنوان یک بسته NPM در دسترس است.

برای بررسی بیشتر کتابخانه Adapter.js، ما نگاه می کنیم.

مفاهیم و استفاده از WebRTC

WebRTC چند منظوره و همراه با ویژگی های چندرسانه ای قدرتمند برای وب است، از جمله پشتیبانی از کنفرانس های صوتی و تصویری، به اشتراک گذاری فایل، ضبط صفحه نمایش، مدیریت شناسایی و تعامل با سیستم های تلفن های قدیمی، از جمله پشتیبانی از انتقال سیگنال های شماره گیری DTMF . اتصالات بین گره ها را می توان بدون استفاده از رانندگان ویژه یا پلاگین ها و اغلب بدون خدمات متوسط \u200b\u200bایجاد کرد.

اتصال بین دو گره به عنوان شیء رابط RTCPeerconnection نشان داده شده است. به محض این که اتصال برقرار شود و باز شود، با استفاده از شی RTCPeerconnection، MediaStream S) و / یا کانال های داده (RTCDatachannel S) را می توان به اتصال اضافه کرد.

جریان های رسانه ای ممکن است شامل هر تعداد آهنگ ها (آهنگ ها) اطلاعات رسانه ای باشد. این آهنگ ها توسط اشیاء رابط MediaStreamTrack نشان داده شده است و ممکن است شامل یک یا چند زبان رسانه ای، از جمله صوتی، تصویری، متن (مانند زیرنویس ها یا سران فصل ها) باشد. اکثر موضوعات شامل حداقل، تنها یکی از آهنگ های صوتی (یک آهنگ صوتی) یا آهنگ های ویدئویی است و می تواند به عنوان جریان (رسانه ای بی اهمیت) ارسال و به دست آورد و یا در یک فایل ذخیره می شود.

همچنین می توانید از اتصال بین دو گره برای مبادله داده های دلخواه با استفاده از شیء رابط RTCDatachannel استفاده کنید که می تواند برای انتقال اطلاعات خدمات، داده های سهام، بسته های وضعیت بازی، انتقال فایل ها یا کانال های داده بسته استفاده شود.

جزئیات بیشتر و پیوندهایی به راهنماهای مربوطه و آموزش های مورد نیاز

رابط WebRTC

با توجه به این واقعیت که WebRTC رابط کاربری را برای انجام وظایف مختلف فراهم می کند، ما آنها را به دسته تقسیم کردیم. اشاره گر پانل سمت الفبایی را برای ناوبری سریع مشاهده کنید.

اتصال و مدیریت

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

RTCPeerconnection نشان دهنده اتصال WEBRTC بین کامپیوتر محلی و گره از راه دور است. برای رسیدگی به انتقال داده های موفقیت آمیز بین دو گره استفاده می شود. RTCSessionDescription پارامترهای جلسه را ارائه می دهد. هر RTCSessionDescription شامل توصیف نوع نشان دادن بخشی از (پیشنهاد / پاسخ) فرایند مذاکره، آن را توصیف می کند، و SDP SDP SDP. Rtcicecandidate یک نامزد برای نصب اتصال به اینترنت (یخ) برای تنظیم اتصالات rtcpeerconnection است. RTCicetransport اطلاعاتی در مورد ابزار اتصال به اینترنت (یخ) فراهم می کند. RTCPeerconnectioneVent نشان دهنده رویدادهایی است که با یخ نامزدها رخ می دهد، معمولا RTCpeerconnection است. یک نوع به این رویداد منتقل می شود: Icecandidate. RtcrTpsender کنترل گرده افشانی و انتقال داده ها را از طریق شیء MediaStreamtrack برای شی RTCPeerconnection کنترل می کند. RTCRTPRECEIVER مدیریت داده های دریافت و رمزگشایی را از طریق MediaStreamTrack Object برای شیء RTCPeerconnection مدیریت می کند. RTCTRACKEVENT نشان می دهد که شیء جدید MediaStreamTrack جدید ایجاد شده است و یک شی از نوع RTCRTPreceiver به شی RTCPeerconnection اضافه شده است. RTCCertificate یک گواهی را ارائه می دهد که از شی RTCPeerconnection استفاده می کند. RTCDatachannel نشان دهنده یک کانال داده دو نفره بین دو گره اتصالات است. RTCDatachannelevent نشان دهنده رویدادهایی است که زمانی رخ می دهد که شی از نوع RTCDatachannel به شیء Datachannel RTCPeerconnection متصل است. RTCDTMFSender کنترل برنامه نویسی و انتقال زنگ های چند فرکانس دوگانه (DTMF) را برای هدف نوع RTCPeerconnection نوع کنترل می کند. rtcdtmftonechangeevent نشان می دهد یک رویداد ورودی برای تغییر تن از زنگ هشدار چند فرکانس دارتون (DTMF). این رویداد پاپ نمی شود (مگر اینکه در غیر این صورت مشخص شود) و لغو نشده است (مگر اینکه مشخص شود). RTCStatisReport Assmonchlously وضعیت را برای شیء MediaStreamtrack منتقل می کند. RTCidentityProviderregistrar ارائه دهنده شناسایی ثبت نام (IDP). RTCidentyprovider توانایی مرورگر را برای درخواست ایجاد یا تأیید تعهدات شناسایی فعال می کند. RTCidentyassertion نشان دهنده شناسه گره از راه دور اتصال فعلی است. اگر گره هنوز نصب نشده و تایید نشده باشد، پیوند به رابط کاربری صفر را باز می کند. پس از نصب تغییر نمی کند RTCidentyEvent نشان دهنده یک ارائه دهنده شناسایی شناسه رویداد رویداد (IDP) است. نوع شی rtcpeerconnection. یک نوع به این رویداد IdentityResult منتقل می شود. RTCidentityerRoreVent نشان دهنده یک رویداد خطا در ارتباط با ارائه دهنده شناسایی (IDP) است. نوع شی rtcpeerconnection. دو نوع خطای خطا به این رویداد منتقل می شود: idpasserterror و idpvalidationError.

کتابچه راهنمای

خلاصه ای از معماری WebRTC تحت API، که توسط توسعه دهندگان برای ایجاد و استفاده از WebRTC استفاده می شود، مجموعه ای از پروتکل های شبکه و استانداردهای اتصال است. این بررسی نمایش این استانداردها است. WebRTC به شما اجازه می دهد تا یک اتصال را در حالت گره برای انتقال داده های دلخواه، صوتی، جریان های ویدئویی یا هر ترکیبی در مرورگر سازماندهی کنید. در این مقاله ما نگاهی به زندگی جلسه WebRTC، با شروع از نصب اتصال و راه رفتن از طریق کل مسیر قبل از تکمیل زمانی که دیگر مورد نیاز نیست. WEBRTC WEBRTC WEBRTC WEBRTC شامل چندین رابط برنامه نویسی متصل شده (APIs) و پروتکل هایی است که برای ارائه پشتیبانی از تبادل اطلاعات و جریان رسانه ها بین دو یا چند گره می پردازند. این مقاله یک مرور کلی از هر یک از این API ها را ارائه می دهد و هدف او را دنبال می کند. اصول اولیه WebRTC این مقاله شما را از طریق ایجاد یک برنامه RTC مرورگر متقابل نگه می دارد. در پایان این مقاله، شما باید یک اطلاعات کار و کانال رسانه ای که در حالت نقطه به نقطه عمل می کنند، داشته باشید. پروتکل های WebRTC در این مقاله پروتکل ها را ارائه می دهد، علاوه بر این که API WebRTC ایجاد شده است. این راهنما توضیح می دهد که چگونه می توانید از گره واحد و مرتبط استفاده کنید