Webrtc. Τηλεδιάσκεψη στο πρόγραμμα περιήγησης. Συζήτηση πολλαπλών χρηστών με και χρησιμοποιώντας τη χρήση WebRTC σε εξειδικευμένες λύσεις

WebRTC (συντομογραφία από τις επικοινωνίες σε πραγματικό χρόνο Web) είναι μια τεχνολογία που σας επιτρέπει να μεταδώσετε δεδομένα ροής ήχου και βίντεο μεταξύ των προγραμμάτων περιήγησης και των κινητών εφαρμογών.


Η ανάπτυξη αυτής της τεχνολογίας είναι ο ανταγωνισμός Skype. Το WebRTC μπορεί να χρησιμοποιηθεί για τη διοργάνωση τηλεδιάσκεψης απευθείας στο πρόγραμμα περιήγησης. Το έργο έχει έναν ανοικτό κώδικα και προωθείται ενεργά από την Google και ειδικότερα την ομάδα ανάπτυξης του Google Chrome Browser.


Τα προγράμματα περιήγησης χρήστη χάρη στην τεχνολογία WebRTC μπορούν να μεταδώσουν άμεσα τα δεδομένα μεταξύ τους. Το WebRTC δεν χρειάζεται ξεχωριστό διακομιστή που αποθηκεύεται και επεξεργάζεται τα δεδομένα. Όλα τα δεδομένα επεξεργάζονται απευθείας από τα αρχεία και τις εφαρμογές κινητών τελικών χρηστών.


Η τεχνολογία WebRTC υποστηρίζεται από όλους τους δημοφιλείς Mozilla Firefox, Opera, Google Chrome (και όλα τα προγράμματα περιήγησης με βάση το Google Chrome), καθώς και τις κινητές εφαρμογές που βασίζονται στο Android και Ίο.

ΚΙΝΔΥΝΟΣ WEBRTC.

Ο κίνδυνος της τεχνολογίας WebRTC είναι να ορίσετε την πραγματική σας διεύθυνση IP. Δεδομένου ότι η σύνδεση απευθύνεται απευθείας με άλλο χρήστη, πρόγραμμα περιήγησης, ιστότοπου ή κινητής τηλεφωνίας, οι ρυθμίσεις δικτύου αγνοούνται. Για να δημιουργήσετε συνδέσμους ήχου και βίντεο, τα προγράμματα περιήγησης θα πρέπει να ανταλλάσσουν εξωτερικές και τοπικές διευθύνσεις IP.

Η ανώνυμη υπηρεσία VPN επιλύει αυτό το πρόβλημα και κρύβει την πραγματική διεύθυνση IP. Το μέγιστο, το οποίο μπορεί να ανιχνευθεί είναι μια τοπική διεύθυνση IP που αντιστοιχεί στο δίκτυο VPN χρήστη. Δεν είναι επικίνδυνο, καθώς οι ίδιες τοπικές διευθύνσεις IP θα εμφανιστούν εάν χρησιμοποιείτε δρομολογητή για διανομή του Διαδικτύου.


Εάν χρησιμοποιείτε ένα διακομιστή μεσολάβησης, τότε webrtc θα είναι σε θέση να καθορίσει την πραγματική διεύθυνση IP για διακομιστή μεσολάβησης ή IP VPN Server εάν χρησιμοποιείτε μια αλυσίδα Proxy VPN +.


Ο Webrtc ορίζει επίσης την πραγματική διεύθυνση IP σας όταν χρησιμοποιείτε το δίκτυο Tor.


Η καλύτερη λύση είναι να απενεργοποιήσετε την τεχνολογία webrtc αν δεν το χρησιμοποιήσετε.

Πώς να απενεργοποιήσετε το WebRTC στα προγράμματα περιήγησης

Γρήγορη πλοήγηση σε αυτή τη σελίδα.

Πώς να απενεργοποιήσετε το WebRTC στο Mozilla Firefox

Το Browser του Mozilla Firefox είναι ένα μόνο πρόγραμμα περιήγησης που σας επιτρέπει να απενεργοποιήσετε την τεχνολογία WebRTC χωρίς να εγκαταστήσετε επιπλέον plugins.

Χειροκίνητη ρύθμιση

Εάν δεν χρησιμοποιείτε την τεχνολογία WebRTC, μπορείτε να το απενεργοποιήσετε πλήρως. Στην περίπτωση που είναι απαραίτητο να χρησιμοποιήσετε το WebRTC περιοδικά πιο βολικό.

Για να απενεργοποιήσετε την τεχνολογία WebRTC στο Mozilla Firefox, πρέπει να εισάγετε το ακόλουθο κείμενο στη γραμμή διευθύνσεων του προγράμματος περιήγησης και πατήστε το κουμπί ENTER.

Σχετικά με: Config


Κάντε κλικ, κάνω ένα κουμπί κινδύνου.


Εκτελέστε τα εξής:

  1. Στη συμβολοσειρά αναζήτησης, εισάγετε το κείμενο και πατήστε Enter.
  2. media.peerconnection.Enabled.
  3. Κάντε δεξί κλικ στη συμβολοσειρά και επιλέξτε διακόπτη. Ή κάντε διπλό κλικ στη γραμμή.


Μετά από αυτά τα βήματα, ο WebRTC θα απενεργοποιηθεί.

Ρύθμιση μέσω του πρόσθετου ελέγχου webrtc

Εάν χρησιμοποιείτε την τεχνολογία WebRTC, στη συνέχεια απενεργοποιήστε και ενεργοποιήστε τις ρυθμίσεις θα χρειαστούν πολύ καιρό. Εγκαταστήστε ένα plugin που θα σας βοηθήσει να ενεργοποιήσετε και να απενεργοποιήσετε το webrtc σε 1 κλικ του ποντικιού.

Ανοίξτε τα πρόσθετα.


Επιλέγω:

  1. Αναζήτηση τμήματος
  2. Καταχωρίστε το όνομα του plug-in στη συμβολοσειρά αναζήτησης: Έλεγχος webrtc
  3. Κάντε κλικ στο κουμπί Εγκατάσταση


Πώς να απενεργοποιήσετε το WebRTC στο πρόγραμμα περιήγησης Opera

Για να απενεργοποιήσετε το WebRTC στο πρόγραμμα περιήγησης Opera, μεταβείτε στη γκαλερί επεκτάσεων.


Ακολουθήστε αυτά τα βήματα:

  1. Καταχωρίστε το όνομα του plug-in στη γραμμή αναζήτησης: Έλεγχος webrtc
  2. Κάντε κλικ στο Plugin


Κάντε κλικ στην επιλογή Προσθήκη στην Όπερα.


Ενεργοποιήστε το plugin. Το εικονίδιο plug-in θα πρέπει να είναι μπλε για το κλείδωμα WebRTC.

Πώς να απενεργοποιήσετε τον WebRTC στο Google Chrome

Για να απενεργοποιήσετε το WebRTC στο Google Chrome Browser, μεταβείτε στο τμήμα επέκτασης.


Μετακινηθείτε προς τα κάτω στη σελίδα προς τα κάτω και πατήστε περισσότερες επεκτάσεις.


Ακολουθήστε αυτά τα βήματα:

  1. Εισαγάγετε το όνομα του plugin στη συμβολοσειρά αναζήτησης: Έλεγχος webrtc
  2. Κάντε κλικ στο κουμπί Εγκατάσταση.



Ενεργοποιήστε το plugin. Το εικονίδιο plug-in θα πρέπει να είναι μπλε για το κλείδωμα WebRTC.

Πώς να απενεργοποιήσετε το WebRTC στο πρόγραμμα περιήγησης Yandex

Για να απενεργοποιήσετε το WebRTC στο πρόγραμμα περιήγησης Yandex, μεταβείτε στην ενότητα Add-On.


Μετακινηθείτε προς τα κάτω στη σελίδα κάτω και πατήστε τον κατάλογο επέκτασης για το πρόγραμμα περιήγησης Yandex.


Εκτελέστε δράσεις:

  1. Καταχωρίστε το όνομα του plugin στη γραμμή αναζήτησης: Έλεγχος webrtc
  2. Κάντε κλικ στο plugin για να εγκαταστήσετε.


Κάντε κλικ στην επιλογή Προσθήκη στο πρόγραμμα περιήγησης Yandex.


Κάντε κλικ στην επιλογή Εγκατάσταση επέκτασης.


Ενεργοποιήστε το plugin. Το εικονίδιο plug-in θα πρέπει να είναι μπλε για το κλείδωμα WebRTC.

Πώς να απενεργοποιήσετε το WebRTC στο πρόγραμμα περιήγησης σιδήρου Srwar

Το πρόγραμμα περιήγησης Srware σίδερο γίνεται με βάση το Google Chrome.

Τοποθετήστε το πρόσθετο ελέγχου WebRTC σύμφωνα με τις οδηγίες.

Το WebRTC είναι ένα API που παρέχεται από ένα πρόγραμμα περιήγησης και σας επιτρέπει να οργανώσετε τη σύνδεση P2P και τη μεταφορά δεδομένων απευθείας μεταξύ των προγραμμάτων περιήγησης. Στο Διαδίκτυο υπάρχουν αρκετά εγχειρίδια για τη σύνταξη της δικής σας συνομιλίας βίντεο χρησιμοποιώντας webrtc. Για παράδειγμα, εδώ είναι ένα άρθρο σχετικά με το habré. Ωστόσο, όλα αυτά περιορίζονται στη σύνδεση δύο πελατών. Σε αυτό το άρθρο, θα προσπαθήσω να πω πώς να οργανώσετε τη σύνδεση και τα μηνύματα μεταξύ τριών και περισσότερων χρηστών που χρησιμοποιούν webrtc.

Η διεπαφή RTCPEERConnection είναι μια σύνδεση Peer-to-Peer μεταξύ δύο προγραμμάτων περιήγησης. Για να συνδέσετε τρεις και περισσότερους χρήστες, θα πρέπει να οργανώσουμε ένα δίκτυο ματιών (ένα δίκτυο στο οποίο κάθε κόμβος συνδέεται με όλους τους άλλους κόμβους).
Θα χρησιμοποιήσουμε το ακόλουθο σύστημα:

  1. Κατά το άνοιγμα μιας σελίδας, ελέγξτε την παρουσία του αναγνωριστικού του δωματίου μέσα τοποθεσία.hash.
  2. Εάν το αναγνωριστικό του δωματίου δεν έχει καθοριστεί, δημιουργούμε ένα νέο
  3. Στέλνουμε το διακομιστή σηματοδότησης "το μήνυμα για το τι θέλουμε να ενταχθούν στο καθορισμένο δωμάτιο
  4. Ο διακομιστής σηματοδότησης καλεί τους υπόλοιπους πελάτες σε αυτό το δωμάτιο μια νέα ειδοποίηση χρήστη
  5. Οι πελάτες που είναι ήδη στο δωμάτιο στείλτε μια προσφορά Newcomer SDP
  6. Newbie απαντήσεις για να προσφέρουν "s

0. Σηματοδότηση διακομιστή

Όπως γνωρίζετε, τουλάχιστον webrtc και παρέχει τη δυνατότητα συνδέσεων P2P μεταξύ των περιηγητή, εξακολουθεί να απαιτεί πρόσθετες μεταφορές σε μηνύματα ανταλλαγής υπηρεσιών. Σε αυτό το παράδειγμα, ο διακομιστής Websocket που γράφτηκε στο Node.js χρησιμοποιώντας το Socket.io ενεργεί ως τέτοια μεταφορά.

Var socket_io \u003d απαιτούν ("socket.io"). module.exports \u003d (server) (inf users \u003d (); var io \u003d socket_io (server); io.on ("σύνδεση", λειτουργία (υποδοχή) (// Η επιθυμία ενός νέου χρήστη ενταχθεί στην υποδοχή.On δωμάτιο (" Δωμάτιο ", λειτουργία (μήνυμα) (var json \u003d json.parse (μήνυμα); // προσθέστε μια υποδοχή στη λίστα των χρηστών χρηστών \u003d υποδοχή? Αν (υποδοχή.room! \u003d\u003d undefined) (// αν η υποδοχή είναι ήδη Σε κάποιο δωμάτιο, βγαίνουν από την υποδοχή του. Deave (Socket.Room);) // Εισάγετε την ζητούμενη υποδοχή δωματίου .room \u003d json.room; socket.join (socket.roid); socket.user_id \u003d json.id; / / Αποστολή στους υπόλοιπους πελάτες σε αυτό το δωμάτιο, ένα μήνυμα για την ένταξη σε μια νέα υποδοχή μελών.Broadcast.to (socket.room) .Emit ("New", JSON.ID))); // Μήνυμα που σχετίζεται με το WebRTC ( Προσφορά SDP, Απάντηση SDP ή υποψήφια SDP) Socket.On ("WebrTC", λειτουργία (μήνυμα) (μήνυμα). Αν (json.to! \u003d\u003d undefined && undered & undered) (// εάν το μήνυμα ορίζεται από Ο παραλήπτης και αυτός ο παραλήπτης που είναι γνωστός στον διακομιστή, στείλτε ένα μήνυμα μόνο σε αυτόν ... hoses.emit ("webrtc", μήνυμα). ) Αλλιώς (// ... διαφορετικά θεωρούμε το μήνυμα με ραδιοτηλεοπτική εκπομπή.Broadcast.To (Socket.Room) .Emit ("Webrtc", μήνυμα);))); // κάποιος αποσυνδεδεμένος socket.on ("αποσύνδεση", λειτουργία () (// όταν αποσυνδέεται ο πελάτης, ειδοποιούμε για αυτό το άλλο socket.Broadcast.to (socket.room) .Emit ("άδεια", socket.user_id); Διαγράψτε τους χρήστες;)); )); )

1. Index.html

Ο πηγαίος κώδικας της ίδιας της σελίδας είναι αρκετά απλός. Συνειδητοποίησα συνειδητά την προσοχή στη διάταξη και άλλες όμορφες, όπως αυτό το άρθρο δεν είναι γι 'αυτό. Αν κάποιος θέλει, το κάνει όμορφο, δεν θα λειτουργήσει πολύ δυσκολίες.

Webrtc chat demo.

Συνδεδεμένος με. 0 Συνομηλίκους.

2. main.js.

2.0. Λάβετε συνδέσμους σε στοιχεία σελίδας και διεπαφές WebRTC
var chatlog \u003d document.geteLementiid ("chatlog"); var μήνυμα \u003d document.getelementidyid ("μήνυμα"); var connengy_num \u003d document.getelementbyid ("connection_num"); var room_link \u003d document.getelementbyid ("room_link");

Πρέπει ακόμα να χρησιμοποιήσουμε τα προθέματα περιήγησης για πρόσβαση στις διεπαφές WebRTC.

Var peerconnection \u003d window.mozrtcpeerconnection || Window.webkitrttcpeerconnection. Var sessiondescription \u003d window.mozrtcsessiondescription || Window.rtcsessiondescription? var opeCandididate \u003d window.mozrtcicecadidate || Window.rtcicecAdidate;

2.1. Ορισμός αναγνωριστικού του δωματίου

Εδώ θα χρειαστούμε μια λειτουργία για να δημιουργήσουμε ένα μοναδικό αναγνωριστικό του δωματίου και του χρήστη. Θα χρησιμοποιήσουμε uuid για αυτούς τους σκοπούς.

Λειτουργία UUID () (Return math.wloor () (math.random () * 0x10000) .TOSTRING (16);); Επιστροφή S4 () + S4 () + - "+ S4 () +" - " () + "-" + S4 () + "-" + S4 () + S4 () + S4 ())

Τώρα ας προσπαθήσουμε να τραβήξουμε το αναγνωριστικό δωματίου από τη διεύθυνση. Εάν αυτό δεν έχει καθοριστεί, θα δημιουργήσουμε ένα νέο. Ας φέρουμε τη σύνδεση με το σημερινό δωμάτιο στη σελίδα και, για ένα, θα δημιουργήσει το τρέχον αναγνωριστικό χρήστη.

VAR δωμάτιο \u003d θέση.hash.substr (1); Εάν (! δωμάτιο) (δωμάτιο \u003d uuid ();) room_link.innerhml \u003d "σύνδεση με το δωμάτιο". var me \u003d uuid ();

2.2. Websocket.

Αμέσως όταν ανοίγετε τη σελίδα, θα συνδεθείτε με το διακομιστή σηματοδότησης "Y, στείλτε ένα αίτημα για να εισέλθετε στο δωμάτιο και να καθορίσετε τους χειριστές μηνυμάτων.

// Προσδιορίστε ότι όταν κλείσετε το μήνυμα που χρειάζεστε για να στείλετε το διακομιστή στην υποδοχή VAR \u003d io.Connect (", (" συγχρονισμός συγχρονισμού κατά την εκφόρτωση ": TRUE)). socket.on ("webrtc", socketreceed)? socket.on ("νέο", socketnewpeer); // Αμέσως αποστέλλει ένα αίτημα για να εισέλθετε στην υποδοχή.emit δωμάτιο ("δωμάτιο", json.stringyify ((id: me, δωμάτιο: δωμάτιο)); // Βοηθητική λειτουργία για την αποστολή μηνυμάτων διευθύνσεων που σχετίζονται με τη λειτουργία WebRTC SendViasocket (τύπος, μήνυμα, σε) (socket.emit ("webrtc", json.stridingify ((id: me, to: to, Τύπος: Τύπος, δεδομένα: Μήνυμα) )) ·)

2.3. Ρυθμίσεις Peerconnection

Οι περισσότεροι πάροχοι παρέχουν σύνδεση στο διαδίκτυο μέσω NAT. Εξαιτίας αυτού, η άμεση σύνδεση δεν γίνεται τόσο ασήμαντη υπόθεση. Κατά τη δημιουργία μιας σύνδεσης, πρέπει να καθορίσουμε τη λίστα των stun και να μετατρέψουμε τους διακομιστές που το πρόγραμμα περιήγησης θα προσπαθήσει να χρησιμοποιήσει για να παρακάμψει το NAT. Καθορίζουμε επίσης ένα ζευγάρι πρόσθετων επιλογών για τη σύνδεση.

VAR Server \u003d (ICESERVERS: [URL: "STUN: 23.21.150.121"), (URL: "Stun: stun.l.google.com: 19302"), (URL: "Turn: numb.viagenie.ca", πιστοποίηση : "Ο κωδικός σας πηγαίνει εδώ", όνομα χρήστη: " [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]")])) Options \u003d (Προαιρετικό: [(DTLSSRTPKeyAghrenement: True), // Απαιτείται να συνδεθείτε μεταξύ Chrome και Firefox (Rtpdatachannels: True) // Απαιτείται στο Firefox για να χρησιμοποιήσετε το API api])

2.4. Σύνδεση νέου χρήστη

Όταν μια νέα γιορτή προστίθεται στο δωμάτιο, ο διακομιστής μας στέλνει ένα μήνυμα. νέος. Σύμφωνα με τους χειριστές μηνυμάτων που καθορίζονται παραπάνω, μια λειτουργία θα καλέσει. socketnewpeer.

Var peers \u003d (); Λειτουργία SocketNewPeer (δεδομένα); // Δημιουργία νέας σύνδεσης VAR PC \u003d Νέα Peerconnection (Server, Επιλογές); // Αρχικοποίηση Initconnection (PC, Δεδομένα, "Προσφορά"); // Διατηρήστε το PIR στη λίστα PEERS.Connection \u003d PC; // Δημιουργία datachannel για το οποίο var Channel \u003d PC.CreatedAtachannel ("Mychannel", ()); Channel.owner \u003d Δεδομένα; \u200b\u200bPeers.Channel \u003d κανάλι; // Εγκατάσταση χειριστηρίων συμβάντος διαύλου (κανάλι); // Δημιουργία SDP Προσφορά PC.REAREOFFER (λειτουργία (προσφορά));) Λειτουργία Initconnection (PC, ID, SDPTYPE) (PC.OLOCECANDIDATE \u003d Λειτουργία (εάν (συμβάν) (εάν (event.Candidate) (// Όταν εντοπιστεί ο νέος πάγος του υποψηφίου Ο κατάλογος για περαιτέρω αποστολή PEERS.CANDIDATECACHE.PUSH (EVENT.CANDIDATE);) αλλού (// Όταν ολοκληρωθεί η υποψήφια ανίχνευση, ο χειριστής θα καλείται ξανά, αλλά χωρίς υποψήφιο // σε αυτή την περίπτωση στέλνουμε μια πρώτη προσφορά 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 += "

Peer λέει: "+ e.data +"
"; }; }

2.5. Προσφορά SDP, SDP Απάντηση, υποψήφιος πάγου

Μετά την παραλαβή ενός από αυτά τα μηνύματα, καλέστε τον χειριστή του αντίστοιχου μηνύματος.

Λειτουργία SocketReceved (Δεδομένα) (Δεδομένα). Διακόπτης (JSON.TYPE) (υποψήφιος) (JSON.ID, JSON.DATA); Break; Case "Προσφορά": RemotoFferEved (JSON, ID, JSON.DATA); Απάντηση ": Remoteanswerrave (JSON.ID, JSON.DATA); Break;))

2.5.0 Προσφορά SDP.
Λειτουργία απομακρυσμένη (ID, Δεδομένα) (Δημιουργία, Αναγνωριστικό) (ID), VAR PC \u003d PEERS.Connection, PC.SetremotEdesRiption (Δεδομένα); PC.CreateAsswer (Λειτουργία (απάντηση))))))))))) (Peeters \u003d\u003d\u003d undefined) (Peeters \u003d (candidatecache :); var pc \u003d νέα peerconnection (διακομιστή, επιλογές); initconnection (PC, id, "απάντηση"); peers.connection \u003d pc. pc.ondatachannel \u003d λειτουργία (e ) (Peers.Channel \u003d E.Channel, Peers.Channel.Owner \u003d ID; Bettervents (Peers.Channel)))))
2.5.1 Απάντηση SDP.
Λειτουργία Remoteanswerrave (αναγνωριστικό, δεδομένα) (VAR PC \u003d PEERS.Connection, PC.SetremotEdesRiption (νέα συνεδρίαση (δεδομένα));)
2.5.2 Υποψήφιος πάγου.
Λειτουργία RemotEcandidentereced (ID, DATA) (Δημιουργία (ID), VAR PC \u003d PEERS.Connection; PC.ADDICECANDATE (νέο ICECANDIDATE (δεδομένα))
2.6. Αποστολή μηνύματος

Πατώντας το κουμπί Στείλετε. Η λειτουργία καλείται Να στείλετε μήνυμα.. Όλα όσα έχει περάσει στη λίστα των συνομηλίκων και προσπαθεί να στείλει το συγκεκριμένο μήνυμα σε όλους.

Ο σκοπός αυτού του άρθρου είναι σε δείγμα επίδειξης της συνομιλίας Video Peer (P2P Video Chat) για να εξοικειωθεί με τη δομή και την αρχή της εργασίας. Για το σκοπό αυτό, χρησιμοποιούμε το δείγμα επίδειξης πολλαπλών χρηστών του webrtc.io-demo peering video chat. Μπορεί να μεταφορτωθεί με αναφορά: https://github.com/webrtc/webrtc.io-demo/tree/master/site.

Πρέπει να σημειωθεί ότι το github είναι μια ιστοσελίδα ή μια υπηρεσία ιστού για κοινή ανάπτυξη έργων Web. Στις προγραμματιστές πληροφορικής μπορεί να τοποθετήσει κώδικες των εξελίξεων τους, να τους συζητήσουν και να επικοινωνούν μεταξύ τους. Επιπλέον, ορισμένες μεγάλες εταιρείες πληροφορικής τοποθετούν τα επίσημα αποθετήρια τους σε αυτόν τον ιστότοπο. Η υπηρεσία είναι δωρεάν για έργα ανοιχτού κώδικα. Το GitHub είναι ένα αποθετήριο βιβλιοθηκών βιβλιοθηκών, κωδικού ελεύθερου πηγαίου κώδικα.

Έτσι, η λήψη από το github ένα δείγμα επίδειξης μιας συνομιλίας Video Peer, για να δημοσιεύσετε στο δίσκο με έναν προσωπικό υπολογιστή στον καθορισμένο κατάλογο για την εφαρμογή μας "webrtc_demo".


Σύκο. ένας

Ως εξής από τη δομή (εικ. 1), η συνομιλία μέσω τηλεφώνου αποτελείται από scripts client script.js και διακομιστή server.js που εφαρμόζονται στη γλώσσα προγραμματισμού JavaScript. Script (βιβλιοθήκη) webrtc.io.js (πελάτης) - παρέχει επικοινωνίες σε πραγματικό χρόνο μεταξύ προγραμμάτων περιήγησης από peer-to-name: "πελάτης πελάτη" και webrtc.i.js (πελάτης) και webrtc.i.js (server), Χρησιμοποιώντας το πρωτόκολλο WebSocket, δώστε μια σύνδεση διπλής όψης μεταξύ του προγράμματος περιήγησης και του διακομιστή ιστού της αρχιτεκτονικής του πελάτη.

Το script webrtc.io.js (διακομιστή) εισέρχεται στη βιβλιοθήκη Webrtc.io και βρίσκεται στο Node_Modules \\ WebRTC.IO \\ ALB κατάλογος. Η διασύνδεση της συνομιλίας Video Index.HTML υλοποιείται σε HTML5 και CSS3. Τα περιεχόμενα των αρχείων εφαρμογών webrtc_demo μπορούν να προβληθούν ένας από τους συντάκτες HTML, όπως το "Notepad ++".

Η αρχή της συνομιλίας βίντεο θα ελεγχθεί στο σύστημα αρχείων PC. Για να ξεκινήσετε το διακομιστή (Server.js) στον υπολογιστή, πρέπει να ορίσετε το χρόνο εκτέλεσης Node.js. Ο Node.js σας επιτρέπει να τρέχετε javascript έξω από το πρόγραμμα περιήγησης. Μπορείτε να κατεβάσετε το Node.js με αναφορά: http://nodejs.org/ (έκδοση V0.10.13 στις 07/15/13). Στην κύρια σελίδα του ιστότοπου Node.org, κάντε κλικ στο κουμπί λήψης και μεταβείτε στη διεύθυνση http://nodejs.org/download/. Για τους χρήστες των Windows, κατεβάσετε πρώτα το Win.Installer (.msi), τότε εκτελέστε το Win.Installer (.msi) στον υπολογιστή και εγκαταστήστε το Nodejs και το "NPM Package Manager" στον κατάλογο αρχείων προγράμματος.




Σύκο. 2.

Έτσι, ο Node.js αποτελείται από ένα περιβάλλον ανάπτυξης κωδικών JavaScript και το περιβάλλον εκτέλεσης, καθώς και από ένα σύνολο εσωτερικών ενοτήτων που μπορούν να εγκατασταθούν χρησιμοποιώντας έναν διαχειριστή ή διαχειριστή πακέτου NPM.

Για να εγκαταστήσετε τις μονάδες, είναι απαραίτητο να εκτελέσετε την εντολή στη γραμμή εντολών από τον κατάλογο εφαρμογής (για παράδειγμα, "Webrtc_demo): nPM Εγκατάσταση ονόματος_Module. Κατά τη διάρκεια της διαδικασίας εγκατάστασης, οι μονάδες Manager NPM δημιουργούν το φάκελο Node_Modules στον κατάλογο από το οποίο εκτελέστηκε η εγκατάσταση. Στη διαδικασία λειτουργίας, ο Nodejs συνδέει αυτόματα τις μονάδες από τον κατάλογο Node_Modules.

Έτσι, μετά την εγκατάσταση του NODE.Js, ανοίγουμε τη γραμμή εντολών και ενημερώνουμε τη ρητή ενότητα στον κατάλογο φακέλου Node_Modules WebRTC_Demo χρησιμοποιώντας το Manager Package NPM:

C: \\ webrtc_demo\u003e npm εγκατάσταση express

Το Express Module είναι ένα πλαίσιο Web για τον Node.js ή μια πλατφόρμα ιστού για την ανάπτυξη εφαρμογών. Για να έχετε παγκόσμια πρόσβαση σε Express, μπορείτε να το ορίσετε με αυτόν τον τρόπο: npm install -g express.

Τότε θα ενημερώσω τη μονάδα webrtc.io:

C: \\ webrtc_demo\u003e npm εγκαταστήστε webrtc.io

Στη συνέχεια, στη γραμμή εντολών, ξεκινήστε το διακομιστή: Server.js:

C: \\ webrtc_demo\u003e κόμβος server.js


Σύκο. 3.

Όλοι, ο διακομιστής λειτουργεί με επιτυχία (Σχήμα 3). Τώρα, χρησιμοποιώντας ένα πρόγραμμα περιήγησης ιστού, μπορείτε να επικοινωνήσετε με το διακομιστή μέσω της διεύθυνσης IP και να κατεβάσετε την ιστοσελίδα Index.html με την οποία το πρόγραμμα περιήγησης ιστού θα ανακτήσει τον κώδικα του σεναρίου-πελάτη - script.js και τον κώδικα του webrtc.io. Js κώδικα δέσμης ενεργειών και την εκτέλεση τους. Για τη λειτουργία της συνομιλίας Video Peer (για να εγκαταστήσετε μια σύνδεση μεταξύ δύο προγραμμάτων περιήγησης), είναι απαραίτητο από δύο προγράμματα περιήγησης που υποστηρίζουν το WebRTC, επικοινωνήστε με τη διεύθυνση IP στο διακομιστή σήματος που εκτελείται στο Node.js.

Ως αποτέλεσμα, η διεπαφή του τμήματος πελάτη της εφαρμογής επικοινωνίας (συνομιλία μέσω βίντεο) ανοίγει με ένα αίτημα για επίλυση της πρόσβασης στο θάλαμο και το μικρόφωνο (Εικ. 4).



Σύκο. τέσσερις

Αφού κάνετε κλικ στο κουμπί "Επιτρέψτε", η κάμερα και το μικρόφωνο για την επικοινωνία πολυμέσων είναι συνδεδεμένα. Επιπλέον, μέσω της διεπαφής συνομιλίας βίντεο μπορεί να κοινοποιηθεί με δεδομένα κειμένου (Εικ. 5).



Σύκο. πέντε

Πρέπει να σημειωθεί ότι. Ο διακομιστής είναι συναγερμός και έχει σχεδιαστεί κυρίως για να ρυθμίσει τη σύνδεση μεταξύ των προγραμμάτων χρήστη. Για το Server Server.js Server Server, παρέχοντας συναγερμούς WebRTC, χρησιμοποιεί τον κόμβο.

Τα περισσότερα υλικά μέσα Webrtc. Επικεντρώθηκε στο εφαρμοσμένο επίπεδο γραφής κώδικα και δεν συμβάλλει στην κατανόηση της τεχνολογίας. Ας προσπαθήσουμε να εμβαθύνουμε και να μάθουμε πώς συμβαίνει η σύνδεση, τι είναι μια χειρολαβή και υποψήφιοι σε συνάντηση για αυτό που χρειάζεστε Ζάλισμα. και Στροφή Υπηρέτης.

Webrtc.

Εισαγωγή

WEBRTC - Τεχνολογία προσανατολισμένη με τον Browser που σας επιτρέπει να συνδέσετε δύο πελάτες για τη μετάδοση δεδομένων βίντεο. Κύρια χαρακτηριστικά - Εσωτερική υποστήριξη για προγράμματα περιήγησης (δεν χρειάζομαι τεχνολογίες τύπου εισαγόμενου τρίτου μέρους adobe Flash.) και τη δυνατότητα σύνδεσης των πελατών χωρίς τη χρήση πρόσθετων διακομιστών - σύνδεσης ομότιμος (Περαιτέρω, p2P.).

Δημιουργήστε μια σύνδεση p2P. - ένα μάλλον δύσκολο έργο, καθώς οι υπολογιστές δεν έχουν πάντα δημόσια IP. Διευθύνσεις, δηλαδή διευθύνσεις στο Διαδίκτυο. Λόγω μικρού ποσού IPv4. Οι διευθύνσεις (και για λόγους ασφαλείας) αναπτύχθηκαν μηχανισμός Nat.που σας επιτρέπει να δημιουργείτε ιδιωτικά δίκτυα, για παράδειγμα, για οικιακή χρήση. Πολλοί δρομολογητές στο σπίτι υποστηρίζονται τώρα. Nat. Και χάρη σε αυτό, όλες οι συσκευές στο σπίτι έχουν πρόσβαση στο Διαδίκτυο, παρόλο που οι πάροχοι Διαδικτύου συνήθως παρέχουν ένα IP. διεύθυνση. Δημόσιο IP. Οι διευθύνσεις είναι μοναδικές στο Διαδίκτυο και ιδιωτικές σημειώσεις. Συνδεθείτε p2P. - δύσκολο.

Προκειμένου να το καταλάβετε καλύτερα, εξετάστε τρεις καταστάσεις: και οι δύο κόμβοι βρίσκονται στο ίδιο δίκτυο (Εικόνα 1)Και οι δύο κόμβοι βρίσκονται σε διαφορετικά δίκτυα (ένα σε ιδιωτικό, άλλο δημόσιο) (Σχήμα 2) και οι δύο κόμβοι είναι σε διαφορετικά ιδιωτικά δίκτυα με το ίδιο IP. Διευθύνσεις (Σχήμα 3).

Εικόνα 1: Και οι δύο κόμβοι στο ίδιο δίκτυο

Εικόνα 2: Κόμβοι σε διαφορετικά δίκτυα (ένα σε ιδιωτικό, άλλο δημόσιο)

Εικόνα 3: Κόμβοι σε διαφορετικά ιδιωτικά δίκτυα, αλλά με αριθμητικά ίση διευθύνσεις

Στα αριθμητικά στοιχεία πάνω από το πρώτο γράμμα σε διπλή συμβολική σημείωση σημαίνει τον τύπο της μονάδας (p \u003d Συνομήλικος., R \u003d. Δρομολογητής.). Στο πρώτο σχέδιο, η κατάσταση είναι ευνοϊκή: οι κόμβοι στο δίκτυό τους εντοπίζονται αρκετά από το δίκτυο IP. διευθύνσεις και ως εκ τούτου μπορούν να συνδεθούν απευθείας μεταξύ τους. Στο δεύτερο σχέδιο έχουμε δύο διαφορετικά δίκτυα, τα οποία έχουν παρόμοια αριθμητική των κόμβων. Εδώ είναι δρομολογητές (δρομολογητές), οι οποίοι έχουν δύο διεπαφές δικτύου - στο δίκτυό τους και εκτός του δικτύου τους. Έτσι έχουν δύο IP. Διευθύνσεις. Οι συμβατικοί κόμβοι έχουν μόνο μία διεπαφή μέσω των οποίων μπορούν να επικοινωνούν μόνο στο δίκτυό τους. Εάν μεταδίδουν δεδομένα σε κάποιον έξω από το δίκτυό τους, τότε μόνο με Nat. μέσα στο δρομολογητή (δρομολογητή) και επομένως ορατό σε άλλους κάτω από IP. Η διεύθυνση του δρομολογητή είναι η εξωτερικός IP. διεύθυνση. Έτσι ο κόμβος p1 υπάρχει εσωτερικό IP. = 192.168.0.200 και εξωτερικός IP. = 10.50.200.5 Επιπλέον, η τελευταία διεύθυνση θα είναι εξωτερική και για όλους τους άλλους κόμβους στο δίκτυό της. Παρόμοια κατάσταση και για έναν κόμβο p2.. Ως εκ τούτου, η σύνδεσή τους είναι αδύνατη αν χρησιμοποιούν μόνο την εσωτερική τους (δική τους) IP. Διευθύνσεις. Μπορείτε να χρησιμοποιήσετε εξωτερικές διευθύνσεις, δηλαδή, διευθύνσεις δρομολογητή, αλλά, αφού όλοι οι κόμβοι σε ένα ιδιωτικό δίκτυο, η ίδια εξωτερική διεύθυνση είναι αρκετά δύσκολη. Αυτό το πρόβλημα επιλύεται χρησιμοποιώντας τον μηχανισμό Nat.

Τι θα συμβεί αν εξακολουθούμε να αποφασίσουμε να συνδέσουμε τους κόμβους μέσω των εσωτερικών τους διευθύνσεων; Τα δεδομένα δεν θα υπερβούν το δίκτυο. Για να ενισχύσει το αποτέλεσμα, μπορείτε να φανταστείτε ότι η κατάσταση που απεικονίζεται στο τελευταίο σχήμα - και στους δύο κόμβους συμπίπτουν τις εσωτερικές διευθύνσεις. Εάν τα χρησιμοποιούν για επικοινωνία, κάθε κόμβος θα επικοινωνήσει μαζί του.

Webrtc. Επιτυχώς αντιμετωπίζει τέτοια προβλήματα χρησιμοποιώντας το πρωτόκολλο ΠΑΓΟΣ, που είναι αλήθεια, απαιτεί τη χρήση πρόσθετων διακομιστών ( Ζάλισμα., Στροφή). Σχετικά με όλα αυτά παρακάτω.

Δύο φάσεις Webrtc.

Για να συνδέσετε δύο κόμβους μέσω του πρωτοκόλλου Webrtc. (ή απλά RtcΕάν δύο είναι δεσμευτικές iPhone.'Α) Είναι απαραίτητο να πραγματοποιηθούν ορισμένες προκαταρκτικές ενέργειες για τη θέσπιση σύνδεσης. Αυτή είναι η πρώτη φάση - ρύθμιση της σύνδεσης. Η δεύτερη φάση είναι η μεταφορά δεδομένων βίντεο.

Αμέσως αξίζει να το λέτε αυτό, τουλάχιστον τεχνολογία 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). Το πιο περίπλοκο είναι το δεύτερο βήμα, επειδή αποτελείται από δύο μέρη: ίδρυμα Φυσικός και λογικός Συνδέσεις. Το πρώτο δείχνει τρόποςΜέσω των οποίων τα πακέτα θα πρέπει να πάνε για να φτάσουν από έναν κόμβο δικτύου στο άλλο. Το δεύτερο δείχνει Παραμέτρους βίντεο / ήχου - Τι να χρησιμοποιήσετε την ποιότητα για να χρησιμοποιήσετε κωδικοποιητές.

Διανοητικά στάδιο creatoffer. ή createanswer. Θα πρέπει να συνδεθεί στα στάδια μετάδοσης SDP. και Υποψήφιος πάγος. αντικείμενα.

Κύρια αποστάσεις

Ροές μέσων (Mediastream)

Η κύρια ουσία είναι το ρεύμα μέσων ενημέρωσης, δηλαδή τη ροή δεδομένων βίντεο και ήχου, την εικόνα και τον ήχο. Οι ροές πολυμέσων είναι δύο τύποι - τοπικοί και διαγράφονται. Τα τοπικά λαμβάνουν δεδομένα από συσκευές εισόδου (κάμερα, μικρόφωνο) και απομακρυσμένο πάνω από το δίκτυο. Έτσι, κάθε κόμβος έχει τοπική και απομακρυσμένη ροή. ΣΕ Webrtc. Για ροές υπάρχει μια διεπαφή Μεσολάβηση και επίσης υπάρχει ένα δευτερεύον Localmediastream Ειδικά για τοπική ροή. ΣΕ JavaScript. Μπορείτε να συναντήσετε πρώτα μόνο και αν χρησιμοποιείτε ξεφλουδίζωΤότε μπορείτε να αντιμετωπίσετε το δεύτερο.

ΣΕ Webrtc. Υπάρχει μια μάλλον συγκεχυμένη ιεραρχία μέσα στο ρεύμα. Κάθε νήμα μπορεί να αποτελείται από διάφορα κομμάτια μέσων ( Μέτωπο), η οποία με τη σειρά του μπορεί να αποτελείται από διάφορα κανάλια πολυμέσων ( Mediachannel). Και οι ίδιοι οι ρίζες των μέσων μαζικής ενημέρωσης μπορεί επίσης να είναι κάπως.

Εξετάστε τα πάντα με τη σειρά. Για αυτό θα κρατήσουμε κάποιο παράδειγμα. Ας υποθέσουμε ότι θέλουμε να μεταδώσουμε όχι μόνο το βίντεο του εαυτού μας, αλλά και το βίντεο του τραπεζιού μας, στην οποία ένα κομμάτι χαρτί που βρίσκεται στο οποίο θα γράψουμε κάτι. Θα χρειαστούμε δύο βίντεο (εμείς + πίνακας) και ένα ήχο (εμείς). Είναι σαφές ότι εμείς και ο πίνακας θα πρέπει να χωριστούν σε διαφορετικά ρέματα, επειδή αυτά τα δεδομένα πιθανώς εξαρτώνται ασθενώς μεταξύ τους. Έτσι θα έχουμε δύο Μεσολάβηση'Α είναι ένα για εμάς και ένα για το τραπέζι. Το πρώτο θα περιέχει τόσο δεδομένα βίντεο όσο και ήχου και το δεύτερο είναι μόνο βίντεο (Σχήμα 4).

Σχήμα 4: Δύο διαφορετικές ροές μέσων. Ένα για εμάς ένα για το τραπέζι μας

Είναι άμεσα σαφές ότι το ρεύμα μέσων τουλάχιστον θα πρέπει να περιλαμβάνει τη δυνατότητα να περιέχει δεδομένα από διαφορετικούς τύπους - βίντεο και ήχο. Αυτό λαμβάνεται υπόψη στην τεχνολογία και ως εκ τούτου κάθε είδος δεδομένων υλοποιείται μέσω της διαδρομής μέσων Μέτωπο. Το κομμάτι των μέσων έχει μια ειδική ιδιοκτησία. Είδος.που καθορίζει αυτό μπροστά από εμάς - βίντεο ή ήχο (Σχήμα 5)

Σχήμα 5: Οι ροές πολυμέσων αποτελούνται από κομμάτια μέσων

Πώς θα συμβούν όλα στο πρόγραμμα; Θα δημιουργήσουμε δύο ροές μέσων. Στη συνέχεια, δημιουργήστε δύο κομμάτια βίντεο και ένα κομμάτι ήχου. Παίρνουμε πρόσβαση σε κάμερες και μικρόφωνο. Καθορίζουμε κάθε διαδρομή ποια συσκευή χρησιμοποιεί. Προσθέστε ένα κομμάτι βίντεο και ήχου στο πρώτο ρεύμα μέσων και το βίντεο από άλλη κάμερα στο δεύτερο ρεύμα μέσων.

Αλλά πώς διακρίνουμε τις ροές μέσων στο άλλο άκρο της σύνδεσης; Για αυτό, κάθε ροή μέσων έχει ένα ακίνητο. Επιγραφή - σήμα ροής, το όνομά του (Εικόνα 6). Το ίδιο ακίνητο διαθέτει ένα κομμάτι μέσων. Αν και με την πρώτη ματιά φαίνεται ότι το βίντεο από τον ήχο μπορεί να διακριθεί με άλλους τρόπους.

Εικόνα 6: Οι ροές μέσων και τα κομμάτια αναγνωρίζονται από ετικέτες

Έτσι, και αν τα κομμάτια των μέσων μπορούν να αναγνωριστούν μετά την ετικέτα, τότε γιατί πρέπει να χρησιμοποιήσουμε δύο ροές μέσων για το παράδειγμά μας, αντί για ένα; Μετά από όλα, μπορείτε να μεταφέρετε ένα ρεύμα μέσων και τα κομμάτια να χρησιμοποιούν διαφορετικές διαδρομές. Φτάσαμε τη σημαντική ιδιοκτησία των ροών των μέσων μαζικής ενημέρωσης - αυτοί συγχρονίζω Κομμάτια μέσων. Οι διαφορετικές ροές μέσων δεν συγχρονίζονται μεταξύ τους, αλλά μέσα σε κάθε μέσο πολυμέσων όλα τα κομμάτια Παίζουν ταυτόχρονα.

Έτσι, αν θέλουμε τα λόγια μας, τα συναισθήματά μας στο πρόσωπο και τα φύλλα μας αναπαράγονται ταυτόχρονα, αξίζει να χρησιμοποιήσετε ένα ρεύμα μέσων. Εάν αυτό δεν είναι τόσο σημαντικό, τότε είναι πιο κερδοφόρο να χρησιμοποιήσετε διαφορετικές ροές - η εικόνα θα είναι πιο ομαλή.

Εάν κάποιο κομμάτι πρέπει να αποσυνδεθεί κατά τη διάρκεια της μετάδοσης, μπορείτε να χρησιμοποιήσετε την ιδιότητα. Ενεργοποιημένη. Κομμάτια μέσων.

Στο τέλος αξίζει να σκεφτείτε τον στερεοφωνικό ήχο. Όπως γνωρίζετε, ο στερεοφωνικός ήχος είναι δύο διαφορετικοί ήχοι. Και είναι απαραίτητο να τα μεταδώσουμε ξεχωριστά. Για να το κάνετε αυτό, χρησιμοποιούνται κανάλια. Mediachannel. Η διαδρομή ήχου μέσων μπορεί να έχει πολλά κανάλια (για παράδειγμα, 6, εάν χρειάζεστε έναν ήχο 5 + 1). Μέσα στα κανάλια παρακολούθησης μέσων, φυσικά επίσης Συγχρονισμένος. Για το βίντεο, χρησιμοποιείται συνήθως μόνο ένα κανάλι, αλλά για παράδειγμα, για παράδειγμα, για διαφήμιση χρησιμοποιούνται.

Συνοψίζοντας: Χρησιμοποιούμε το μέσο πολυμέσων για τη μεταφορά δεδομένων βίντεο και ήχου. Μέσα σε κάθε ρεύμα μέσων, τα δεδομένα συγχρονίζονται. Μπορούμε να χρησιμοποιήσουμε διάφορα ρεύματα πολυμέσων εάν δεν χρειαζόμαστε συγχρονισμό. Μέσα σε κάθε ρεύμα μέσων υπάρχει ένα κομμάτι πολυμέσων δύο τύπων - για βίντεο και για ήχο. Τα κομμάτια είναι συνήθως όχι περισσότερο από δύο, αλλά ίσως περισσότερο αν χρειαστεί να μεταδώσετε πολλά διαφορετικά βίντεο (συνομιλητής και τους πίνακες του). Κάθε κομμάτι μπορεί να αποτελείται από διάφορα κανάλια, τα οποία συνήθως χρησιμοποιούνται μόνο για στερεοφωνικό ήχο.

Στην απλούστερη κατάσταση της συνομιλίας βίντεο, θα έχουμε ένα τοπικό ρεύμα μέσων, το οποίο θα αποτελείται από δύο κομμάτια - κομμάτια βίντεο και ηχητικά κομμάτια, καθένα από τα οποία θα αποτελείται από ένα κύριο κανάλι. Το κομμάτι βίντεο είναι υπεύθυνο για την κάμερα, το κομμάτι ήχου είναι ανά μικρόφωνο και το ρεύμα μέσων είναι το δοχείο αυτών και τα δύο.

Περιγραφέας περιγραφής περιγραφής (SDP)

Οι διαφορετικοί υπολογιστές θα έχουν πάντα διαφορετικές κάμερες, μικρόφωνα, κάρτες γραφικών και άλλο εξοπλισμό. Υπάρχουν πολλές παραμέτρους με τις οποίες κατέχουν. Όλα αυτά πρέπει να συντονίζονται για τη μετάδοση δεδομένων μέσων μεταξύ δύο κόμβων δικτύου. Webrtc. Μήπως αυτόματα και δημιουργεί ένα ειδικό περιγραφικό αντικειμένου - SDP.. Περάστε αυτό το αντικείμενο σε έναν άλλο κόμβο και μπορείτε να μεταδώσετε δεδομένα πολυμέσων. Μόνο με τη σύνδεση με έναν άλλο κόμβο δεν είναι ακόμα.

Για να το κάνετε αυτό, χρησιμοποιήστε οποιοδήποτε μηχανισμό σηματοδότησης. SDP. Μπορείτε να μεταφέρετε τουλάχιστον μέσα από τις υποδοχές, τουλάχιστον ένα άτομο (να το ενημερώσετε με έναν άλλο κόμβο μέσω τηλεφώνου), ακόμη και μέσω ταχυδρομείου της Ρωσίας. Όλα είναι πολύ απλά - θα σας δοθούν έτοιμοι SDP. Και πρέπει να σταλεί. Και όταν λαμβάνετε από την άλλη πλευρά - να μεταφέρετε στο τμήμα Webrtc.. Η λαβή περιόδου σύνδεσης αποθηκεύεται ως κείμενο και μπορεί να αλλάξει στις εφαρμογές του, αλλά, κατά κανόνα, δεν είναι απαραίτητο. Για παράδειγμα, όταν συνδέεται, το desktophenefon μερικές φορές απαιτείται να αναγκαστεί να επιλέξει τον επιθυμητό κωδικοποιητή ήχου.

Συνήθως, όταν έχει οριστεί η σύνδεση, πρέπει να καθορίσετε κάποια διεύθυνση, για παράδειγμα Ουσία. Δεν υπάρχει ανάγκη για αυτό, δεδομένου ότι μέσω του μηχανισμού σηματοδότησης εσείς στέλνετε τα δεδομένα προορισμού. Για να υποδείξει Webrtc.τι θέλουμε να εγκαταστήσουμε p2P. Η σύνδεση που θέλετε να καλέσετε τη λειτουργία CreateOffer. Αφού καλέσετε αυτή τη λειτουργία και οδηγίες στην ειδική της Επανάκληση'Ένα θα δημιουργηθεί SDP. αντικείμενο και μεταφέρονται στο ίδιο Επανάκληση. Το μόνο που απαιτείται από εσάς είναι να μεταφέρετε αυτό το αντικείμενο μέσω του δικτύου σε έναν άλλο κόμβο (interlocutor). Μετά από αυτό, στο άλλο άκρο, τα δεδομένα θα έρθουν μέσω του μηχανισμού σήματος, δηλαδή αυτό SDP. ένα αντικείμενο. Αυτή η λαβή περιόδου σύνδεσης για αυτόν τον κόμβο είναι κάποιος άλλος και συνεπώς φέρει χρήσιμες πληροφορίες. Η λήψη αυτού του αντικειμένου είναι ένα σήμα στην αρχή της σύνδεσης. Επομένως, πρέπει να συμφωνήσετε σε αυτό και να καλέσετε τη λειτουργία Createanswer. Είναι ένα πλήρες ανάλογο του Createoffer. Πάλι στο δικό σας Επανάκληση Θα περάσει ένας τοπικός περιγραφέας περιγραφής και θα χρειαστεί να μεταφερθεί στον μηχανισμό σηματοδότησης πίσω.

Αξίζει να σημειωθεί ότι είναι δυνατόν να καλέσετε τη λειτουργία Createanswer μόνο μετά τη λήψη κάποιου άλλου SDP. αντικείμενο. Γιατί; Επειδή η τοπική SDP. Το αντικείμενο που θα δημιουργηθεί όταν καλεί το CreateanSwer πρέπει να βασίζεται στο τηλεχειριστήριο SDP. ένα αντικείμενο. Μόνο στην περίπτωση αυτή είναι δυνατή η συντονισμός των ρυθμίσεων βίντεο με τις ρυθμίσεις του συνομιλητή. Δεν αξίζει επίσης να καλέσετε το CreateanSwer και τη δημιουργία πριν λάβετε ένα τοπικό ρεύμα μέσων - δεν θα έχουν τίποτα να γράψουν μέσα SDP. ένα αντικείμενο .

Ως Β. Webrtc. Είναι δυνατόν να επεξεργαστείτε SDP. Αντικείμενο, αφού λάβετε τον τοπικό περιγραφέα, πρέπει να εγκατασταθεί. Μπορεί να φαίνεται λίγο περίεργο που πρέπει να μεταδώσετε Webrtc. Το γεγονός ότι η ίδια μας έδωσε, αλλά το πρωτόκολλο. Όταν λαμβάνετε έναν απομακρυσμένο περιγραφέα, πρέπει επίσης να εγκατασταθείτε. Επομένως, πρέπει να εγκαταστήσετε δύο περιγραφείς σε έναν κόμβο - το δικό σας και κάποιον άλλο (δηλαδή, τοπικό και απομακρυσμένο).

Μετά από αυτό Χειραψία Οι κόμβοι γνωρίζουν τις επιθυμίες του άλλου. Για παράδειγμα, αν ο κόμβος 1 Υποστηρίζει κωδικοποιητές ΕΝΑ. και ΣΙ., και κόμβος 2 Υποστηρίζει κωδικοποιητές ΣΙ. και ΝΤΟ., αφού κάθε κόμβος γνωρίζει τους δικούς του και τους περιγραφείς κάποιου άλλου, και οι δύο κόμβοι θα επιλέξουν έναν κωδικοποιητή ΣΙ. (Σχήμα 7). Η λογική σύνδεσης είναι τοποθετημένη τώρα και οι ροές πολυμέσων μπορούν να μεταδοθούν, αλλά υπάρχει ένα άλλο πρόβλημα - οι κόμβοι εξακολουθούν να συνδέονται με ένα μηχανισμό σηματοδότησης.


Εικόνα 7: Συντονισμός κωδικοποιητών

Υποψηφίους (υποψήφιος πάγου)

Τεχνολογία Webrtc. Προσπαθεί να μας συγχέει με τη νέα της μεθοδολογία. Όταν η σύνδεση είναι εγκατεστημένη, η διεύθυνση αυτού του κόμβου δεν ορίζεται με την οποία πρέπει να συνδεθείτε. Εγκατασταθεί πρώτα λογικός σύνδεση και όχι ΦυσικόςΑν και έγινε πάντα αντίθετα. Αλλά δεν θα φαίνεται παράξενο αν δεν ξεχνάτε ότι χρησιμοποιούμε μηχανισμό σηματοδότησης τρίτου μέρους.

Έτσι, η σύνδεση έχει ήδη εγκατασταθεί (λογική σύνδεση), αλλά δεν υπάρχει πορεία στον οποίο οι κόμβοι δικτύου μπορούν να μεταδώσουν δεδομένα. Δεν είναι τόσο εύκολο εδώ, αλλά ας ξεκινήσουμε με ένα απλό. Αφήστε τους κόμβους σε ένα ιδιωτικό δίκτυο. Όπως γνωρίζουμε ήδη, μπορούν εύκολα να συνδεθούν μεταξύ τους στο εσωτερικό τους IP. διευθύνσεις (ή ίσως για κάποιο άλλο, αν δεν χρησιμοποιηθεί TCP / IP.).

Μέσα από μερικά Επανάκληση'και Webrtc. Πες μας Υποψήφιος πάγος. Αντικείμενα. Επίσης, έρχονται σε μορφή κειμένου και επίσης, όπως και με τους περιγραφείς της συνεδρίας, πρέπει απλώς να προχωρήσουν μέσω του μηχανισμού σηματοδότησης. Εάν ο περιγραφικός περιγραφέας περιγραφής περιείχε πληροφορίες σχετικά με τις εγκαταστάσεις μας στο επίπεδο του τμήματος και του μικροφώνου, τότε οι υποψήφιοι περιέχουν πληροφορίες σχετικά με την τοποθεσία μας στο δίκτυο. Μεταφέρετε τους σε έναν άλλο κόμβο και θα είναι σε θέση να συνδεθεί σωματικά μαζί μας και, αφού έχει ήδη έναν περιγραφέα συνεδρίας, είναι λογικά ικανό να συνδεθεί και η "ροή δεδομένων". Εάν δεν ξεχάσει να μας στείλει και το αντικείμενο του υποψηφίου, δηλαδή πληροφορίες σχετικά με το πού βρίσκεται στο ίδιο το δίκτυο, τότε μπορούμε να συνδεθούμε με αυτό. Σημείωση εδώ μια άλλη διαφορά από την κλασική αλληλεπίδραση πελάτη-διακομιστή. Η επικοινωνία με τον διακομιστή HTTP συμβαίνει σύμφωνα με το σχέδιο ερωτηματολογίας, ο πελάτης στέλνει δεδομένα στο διακομιστή, τους επεξεργάζεται και τους στέλνει Τη διεύθυνση που καθορίζεται στο πακέτο αίτησης. ΣΕ Webrtc. Πρέπει να ξέρω Δύο διευθύνσεις και να τα συνδέσετε και από τις δύο πλευρές.

Η διαφορά από περιγραφείς περιόδων σύνδεσης είναι ότι χρειάζονται μόνο απομακρυσμένες υποψήφιες. Η επεξεργασία εδώ απαγορεύεται και δεν μπορεί να φέρει κανένα όφελος. Σε ορισμένες εφαρμογές Webrtc. Οι υποψήφιοι πρέπει να εγκατασταθούν μόνο μετά την εγκατάσταση περιγραφών περιόδων σύνδεσης.

Και γιατί ο περιγραφέας της περιόδου σύνδεσης μόνο, και ίσως μπορεί να υπάρχουν πολλοί υποψήφιοι; Επειδή η τοποθεσία στο δίκτυο μπορεί να προσδιοριστεί όχι μόνο από την εσωτερική του IP. Διεύθυνση, αλλά και την εξωτερική διεύθυνση του δρομολογητή, και όχι απαραίτητα ένα, καθώς και διευθύνσεις Στροφή Διακομιστές. Η υπόλοιπη παράγραφο θα αφιερωθεί στη λεπτομερή εξέταση των υποψηφίων και τον τρόπο σύνδεσης των κόμβων από διαφορετικά ιδιωτικά δίκτυα.

Έτσι, δύο κόμβοι βρίσκονται στο ίδιο δίκτυο (Σχήμα 8). Πώς να τα αναγνωρίσετε; Μέσω IP. διευθύνσεις. Κανένας άλλος τρόπος. Είναι αλήθεια, μπορείτε ακόμα να χρησιμοποιήσετε διαφορετικές μεταφορές ( TCP. και UDP.) και διαφορετικές θύρες. Αυτές είναι οι πληροφορίες που περιέχονται στο αντικείμενο του υποψηφίου - IP., Λιμάνι., Μεταφορά. Και κάποια άλλα. Αφήστε, για παράδειγμα, να χρησιμοποιηθεί UDP. Μεταφορά Ι. 531 Λιμάνι.

Εικόνα 8: Δύο κόμβοι βρίσκονται στο ίδιο δίκτυο.

Στη συνέχεια, αν είμαστε στον κόμβο p1Τ. Webrtc. μας δίνουν ένα τέτοιο αντικείμενο του υποψηφίου - . Δεν υπάρχει ακριβής μορφή εδώ, αλλά μόνο ένα σχέδιο. Αν είμαστε στον κόμβο p2., τότε ο υποψήφιος είναι . Μέσω μηχανισμού συναγερμού p1 Πάρτε υποψήφιο p2. (αυτή είναι η θέση του κόμβου p2., δηλαδή του IP. και Λιμάνι.). Επειτα p1 μπορεί να συνδέσει το S. p2. κατευθείαν. Πιο σωστό, p1 θα στείλει δεδομένα στη διεύθυνση 10.50.150.3:531 Με την ελπίδα ότι θα φτάσουν p2.. Δεν έχει σημασία αν αυτή η διεύθυνση ανήκει στον κόμβο p2. Ή κάποιο ενδιάμεσο. Είναι σημαντικό μόνο ότι μέσω αυτών των δεδομένων διεύθυνσης θα σταλούν και μπορούν να επιτευχθούν p2..

Ενώ οι κόμβοι στο ίδιο δίκτυο - όλα είναι απλά και εύκολα - κάθε κόμβος έχει μόνο ένα αντικείμενο του υποψηφίου (που σημαίνει πάντα δικό του, δηλαδή η θέση του στο δίκτυο). Αλλά οι υποψήφιοι θα είναι πολύ περισσότερο όταν οι κόμβοι θα είναι μέσα διαφορετικός δίκτυα.

Ας στραφούμε σε μια πιο περίπλοκη περίσταση. Ένας κόμβος θα είναι πίσω από το δρομολογητή (με μεγαλύτερη ακρίβεια, για το NAT) και ο δεύτερος κόμβος θα βρίσκεται στο ίδιο δίκτυο με αυτόν τον δρομολογητή (για παράδειγμα, στο διαδίκτυο) (Εικόνα 9).

Εικόνα 9: Ένας κόμβος για το NAT, άλλο όχι

Αυτή η περίπτωση έχει μια συγκεκριμένη λύση στο πρόβλημα που έχουμε τώρα και ενδεχόμενη. Ο οικιακός δρομολογητής συνήθως περιέχει ένα τραπέζι Nat.. Αυτός είναι ένας ειδικός μηχανισμός που έχει σχεδιαστεί για να διασφαλίσει ότι οι κόμβοι μέσα στο ιδιωτικό δίκτυο του δρομολογητή μπορούν να χειριστούν, για παράδειγμα, σε ιστότοπους.

Ας υποθέσουμε ότι ο διακομιστής ιστού συνδέεται απευθείας στο διαδίκτυο, δηλαδή, έχει ένα κοινό IP.* διεύθυνση. Ας είναι ένας κόμβος p2.. Κόμπος p1 (Web Client) Αποστολή αίτησης για τη διεύθυνση 10.50.200.10 . Πρώτον, τα δεδομένα πέφτουν στο δρομολογητή r1, ή μάλλον από το δικό του εσωτερικό διεπαφή 192.168.0.1 . Μετά από αυτό, ο δρομολογητής θυμάται τη διεύθυνση της πηγής (διεύθυνση p1) και την εισέρχονται σε ένα ειδικό πίνακα Nat., στη συνέχεια αλλάζει τη διεύθυνση πηγής στο ( p1 r1). Στη συνέχεια, με τον δικό του τρόπο Εξωτερικός Η διεπαφή του δρομολογητή έστειλε δεδομένα απευθείας στον διακομιστή ιστού p2.. Ο διακομιστής Web επεξεργάζεται τα δεδομένα δημιουργούν την απάντηση και στέλνει πίσω. Στείλει δρομολογητή r1Δεδομένου ότι αυτός που βρίσκεται στην αντίθετη διεύθυνση (ο δρομολογητής αντικατέστησε τη διεύθυνση στο δικό του). Ο δρομολογητής παίρνει δεδομένα, κοιτάζει στο τραπέζι Nat. και προωθεί αυτούς τους κόμβους p1. Ο δρομολογητής δρα εδώ ως ενδιάμεσος.

Και τι εάν υπάρχουν αρκετοί κόμβοι από το εσωτερικό δίκτυο ταυτόχρονα στο εξωτερικό δίκτυο; Πώς ο δρομολογητής θα καταλάβει ποιος θα στείλει την απάντηση πίσω; Αυτό το πρόβλημα επιλύεται με portov. Όταν ο δρομολογητής αντικαθιστά τη διεύθυνση του κόμβου στο, αντικαθιστά επίσης τη θύρα. Εάν δύο κόμβοι απευθύνονται στο Διαδίκτυο, ο δρομολογητής αντικαθιστά τους λιμένες πηγής τους διαφορετικός. Στη συνέχεια, όταν το πακέτο από τον διακομιστή Web επανέρχεται στο δρομολογητή, ο δρομολογητής θα καταλάβει τη θύρα που έχει εκχωρηθεί αυτό το πακέτο. Παράδειγμα παρακάτω.

Επιστροφή στην τεχνολογία Webrtc., ή μάλλον, στο μέρος του που χρησιμοποιεί ΠΑΓΟΣ Πρωτόκολλο (από εδώ και ΠΑΓΟΣ Υποψηφίους). Κόμπος p2. έχει έναν υποψήφιο (θέση του στο δίκτυο - 10.50.200.10 ) και τον κόμβο p1που βρίσκεται πίσω από το δρομολογητή με το NAT θα έχει δύο υποψήφιους - τοπικούς ( 192.168.0.200 ) και τον υποψήφιο του δρομολογητή ( 10.50.200.5 ). Το πρώτο δεν είναι χρήσιμο, αλλά δημιουργείται, δεδομένου ότι Webrtc. Δεν γνωρίζει τίποτα για τον απομακρυσμένο κόμβο - μπορεί να βρίσκεται στο ίδιο δίκτυο και ίσως όχι. Ο δεύτερος υποψήφιος θα έρθει σε εύχρηστη και, όπως ήδη γνωρίζουμε, το λιμάνι θα διαδραματίσει σημαντικό ρόλο (για να περάσει Nat.).

Εγγραφή στο τραπέζι Nat. Δημιουργείται μόνο όταν τα δεδομένα βγαίνουν από το εσωτερικό δίκτυο. Ως εκ τούτου, ο κόμβος p1 Πρέπει να είναι η πρώτη που μεταφέρετε τα δεδομένα και μόνο μετά από αυτόν τον κόμβο p2. θα είναι σε θέση να φτάσει στον κόμβο p1.

Στην πράξη Και οι δύο κόμβοι θα είναι μέσα Nat.. Για να δημιουργήσετε μια καταχώρηση στον πίνακα Nat. Κάθε δρομολογητής, οι κόμβοι πρέπει να στείλουν κάτι στον απομακρυσμένο κόμβο, αλλά αυτή τη φορά ούτε το πρώτο δεν μπορεί να φτάσει στο δεύτερο ούτε το αντίθετο. Αυτό οφείλεται στο γεγονός ότι οι κόμβοι δεν γνωρίζουν τα εξωτερικά τους IP. Διευθύνσεις και αποστολή δεδομένων σε εσωτερικές διευθύνσεις χωρίς νόημα.

Ωστόσο, εάν είναι γνωστές οι εξωτερικές διευθύνσεις, η σύνδεση θα εγκατασταθεί εύκολα. Εάν ο πρώτος κόμβος αναπτύξει δεδομένα στον δεύτερο δρομολογητή κόμβου, τότε ο δρομολογητής τους αγνοεί, από το τραπέζι του Nat. Ενώ άδειο. Ωστόσο, στον πρώτο δρομολογητή κόμβο στο τραπέζι Nat. Ένα αρχείο που απαιτείται. Εάν ο δεύτερος κόμβος στέλνει τώρα δεδομένα στον πρώτο δρομολογητή κόμβου, ο δρομολογητής θα τα μεταδώσει με επιτυχία στον πρώτο κόμβο. Τώρα και τραπέζι Nat. Ο δεύτερος δρομολογητής χρειάζεται δεδομένα.

Το πρόβλημα είναι ότι για να μάθετε το εξωτερικό σας IP. Διεύθυνση, χρειάζεστε έναν κόμβο που βρίσκεται σε ένα κοινό δίκτυο. Για να λύσετε ένα τέτοιο πρόβλημα, χρησιμοποιούνται πρόσθετοι διακομιστές, οι οποίοι συνδέονται απευθείας στο διαδίκτυο. Με τη βοήθειά τους, οι αγαπημένες καταχωρήσεις δημιουργούνται επίσης στο τραπέζι. Nat..

Αναισθητοποιήστε και γυρίστε το διακομιστή

Όταν αρχικοποιηθεί Webrtc. Πρέπει να ορίσετε διαθέσιμα Ζάλισμα. και Στροφή διακομιστές που θα κληθούν στο μέλλον ΠΑΓΟΣ διακομιστές. Εάν οι διακομιστές δεν έχουν καθοριστεί, μόνο οι κόμβοι μπορούν να συνδεθούν στο ίδιο δίκτυο (συνδεδεμένο σε αυτό χωρίς Nat.). Αμέσως αξίζει να σημειωθεί ότι για 3G.-Είναι απαραίτητα να χρησιμοποιείτε Στροφή Διακομιστές.

Ζάλισμα. υπηρέτης - Αυτός είναι απλά ένας διακομιστής στο διαδίκτυο που επιστρέφει τη διεύθυνση επιστροφής, δηλαδή τη διεύθυνση του συγκροτήματος του αποστολέα. Ένας κόμβος που έρχεται από το δρομολογητή έκκληση Ζάλισμα. Διακομιστή για να περάσει Nat.. Συσκευασμένος Ζάλισμα. Ο διακομιστής, περιέχει τη διεύθυνση προέλευσης - τη διεύθυνση του δρομολογητή, δηλαδή την εξωτερική διεύθυνση του κόμβου μας. Αυτή η διεύθυνση Ζάλισμα. Διακομιστή και στέλνει πίσω. Έτσι, ο κόμπος παίρνει το εξωτερικό του IP. Διεύθυνση και θύρα μέσω του οποίου είναι διαθέσιμο από το δίκτυο. Περαιτέρω, Webrtc. Με αυτή τη διεύθυνση δημιουργεί ένα επιπλέον υποψήφιο (η εξωτερική διεύθυνση του δρομολογητή και της θύρας). Τώρα στο τραπέζι Nat. Ο δρομολογητής έχει μια καταχώρηση που παραλείπει τα πακέτα που αποστέλλονται στο δρομολογητή από την επιθυμητή θύρα στον κόμβο μας.

Εξετάστε αυτή τη διαδικασία στο παράδειγμα.

Παράδειγμα (Διακομιστής εργασίας STUN)

Ζάλισμα. Ο διακομιστής θα δηλώνεται από s1.. Δρομολογητή, όπως πριν, μέσω r1, και τον κόμπο p1. Θα χρειαστεί επίσης να ακολουθήσετε το τραπέζι Nat. - το αμφισβητούμε ως r1_nat.. Επιπλέον, ο πίνακας αυτός συνήθως περιέχει πολλές εγγραφές από διαφορετικούς κόμβους υποδικτύου - δεν θα τεθούν.

Έτσι, στην αρχή έχουμε ένα κενό τραπέζι r1_nat..

Πίνακας 2: κεφαλίδα συσκευασίας

Κόμπος p1 Στείλει αυτό το πακέτο δρομολογητή r1 (Δεν έχει σημασία το πώς μπορούν να χρησιμοποιηθούν διαφορετικές τεχνολογίες σε διαφορετικά υποδίκτυα). Ο δρομολογητής πρέπει να αντικατασταθεί από τη διεύθυνση προέλευσης SRC IP.Δεδομένου ότι η διεύθυνση που καθορίζεται στη συσκευασία δεν είναι κατάλληλη για το εξωτερικό υποδίκτυο, εξάλλου, οι διευθύνσεις από αυτό το εύρος προορίζονται και καμία διεύθυνση στο Διαδίκτυο έχει μια τέτοια διεύθυνση. Ο δρομολογητής κάνει μια υποκατάσταση στη συσκευασία και δημιουργεί μια νέα είσοδο στο τραπέζι του r1_nat.. Για να το κάνετε αυτό, πρέπει να βρει τον αριθμό του λιμανιού. Θυμηθείτε ότι δεδομένου ότι αρκετοί κόμβοι μέσα στο υποδίκτυο μπορούν να έχουν πρόσβαση στο εξωτερικό δίκτυο, στη συνέχεια στον πίνακα Nat. Πρόσθετες πληροφορίες πρέπει να αποθηκεύονται έτσι ώστε ο δρομολογητής να μπορεί να καθορίσει ποιος από αυτούς τους πολλαπλούς κόμβους είναι η αντίστροφη συσκευασία από το διακομιστή. Αφήστε το δρομολογητή να εφευρέσει το λιμάνι 888 .

Αλλαγή τίτλου πακέτου:

Πίνακας 4: Ο πίνακας NAT αναπληρώθηκε με μια νέα εγγραφή

Εδώ IP. Η διεύθυνση και η θύρα για το υποδίκτυο είναι απολύτως το ίδιο με το πακέτο πηγής. Στην πραγματικότητα, όταν η αντίστροφη ταχύτητα, πρέπει να έχουμε έναν τρόπο να τα αποκαταστήσουμε πλήρως. IP. Η διεύθυνση για το εξωτερικό δίκτυο είναι η διεύθυνση του δρομολογητή και η θύρα έχει αλλάξει στον δρομολογητή που επινοήθηκε.

Αυτό το λιμάνι στο οποίο ο κόμβος p1 παίρνει σύνδεση - αυτό είναι, φυσικά, 35777 Αλλά τα δεδομένα του διακομιστή πλασματικός Λιμάνι 888 που θα αλλάξει από το δρομολογητή στο παρόν 35777 .

Έτσι, ο δρομολογητής αντικατέστησε τη διεύθυνση και τη θύρα της πηγής στην κεφαλίδα του πακέτου και πρόσθεσε μια καταχώρηση στον πίνακα Nat.. Τώρα το πακέτο αποστέλλεται πάνω από το διακομιστή δικτύου, δηλαδή ο κόμβος s1.. Στην είσοδο s1. Έχει ένα τέτοιο πακέτο:

SRC IP. Θύρα SRC. ΔΙΑΚΟΠΤΗΣ IP. Λιμενική θύρα.
10.50.200.5 888 12.62.100.200 6000

Πίνακας 5: STUN Server έλαβε ένα πακέτο

ΣΥΝΟΛΟ, Ζάλισμα. Ο διακομιστής γνωρίζει ότι έχει έρθει ένα πακέτο από τη διεύθυνση 10.50.200.5:888 . Τώρα αυτός ο διακομιστής διευθύνσεων στέλνει πίσω. Αξίζει να μείνετε και να βλέπουμε για άλλη μια φορά ότι μόλις θεωρήσαμε. Οι παραπάνω πίνακες είναι ένα κομμάτι επί κεφαλής πακέτο όχι σε όλα του Περιεχόμενο. Δεν μιλήσαμε για το περιεχόμενο, επειδή δεν είναι τόσο σημαντικό - περιγράφεται κατά κάποιο τρόπο στο πρωτόκολλο Ζάλισμα.. Τώρα θα εξετάσουμε επιπλέον τον τίτλο και το περιεχόμενο. Θα είναι απλό και θα περιέχει τη διεύθυνση του δρομολογητή - 10.50.200.5:888 Αν και το πήραμε επί κεφαλής Πακέτο. Αυτό δεν γίνεται συχνά, συνήθως τα πρωτόκολλα δεν είναι σημαντικές πληροφορίες σχετικά με τις διευθύνσεις των κόμβων, είναι σημαντικό μόνο να παραδοθούν τα πακέτα για τον προορισμό τους. Εδώ θεωρούμε το πρωτόκολλο που θέτει τη διαδρομή μεταξύ δύο κόμβων.

Έτσι, τώρα έχουμε ένα δεύτερο πακέτο που πηγαίνει προς την αντίθετη κατεύθυνση:

Πίνακας 7: Ο διακομιστής STUN στέλνει ένα πακέτο με τέτοιο περιεχόμενο

Στη συνέχεια, το πακέτο ταξιδεύει πάνω από το δίκτυο μέχρι να αποδειχθεί στην εξωτερική διεπαφή του δρομολογητή r1. Ο δρομολογητής αντιλαμβάνεται ότι το πακέτο δεν του προορίζεται. Πώς το καταλαβαίνει αυτό; Μπορεί να βρεθεί μόνο στο λιμάνι. Λιμάνι 888 Δεν χρησιμοποιείται για τους προσωπικούς του στόχους, αλλά χρησιμοποιεί ο μηχανισμός Nat.. Επομένως, σε αυτόν τον πίνακα, ο δρομολογητής φαίνεται. Κοιτάζει τη στήλη Εξωτερική θύρα. και αναζητώντας μια συμβολοσειρά που συμπίπτει με Λιμενική θύρα. από το υποβαλλόμενο πακέτο, δηλαδή 888 .

Εσωτερική IP. Εσωτερικό λιμάνι. Εξωτερική IP. Εξωτερική θύρα.
192.168.0.200 35777 10.50.200.5 888

Πίνακας 8: Τραπέζι NAT

Ήμασταν τυχεροί, μια τέτοια γραμμή υπάρχει. Αν δεν ήταν τυχεροί, το πακέτο απλώς θα ρίξει μακριά. Τώρα πρέπει να καταλάβετε ποιος από τους κόμβους υποδικτύου είναι απαραίτητο να στείλετε αυτό το πακέτο. Μην βιάζεστε, Ας θυμηθούμε και πάλι τη σημασία των λιμένων σε αυτόν τον μηχανισμό. Ταυτόχρονα, δύο κόμβοι στο υποδίκτυο θα μπορούσαν να στείλουν αιτήματα στο εξωτερικό δίκτυο. Στη συνέχεια, αν ο δρομολογητής ήρθε για τον πρώτο κόμβο 888 , τότε για το δεύτερο θα έρθει με το λιμάνι 889 . Ας υποθέσουμε ότι συνέβη, δηλαδή το τραπέζι r1_nat. μοιάζει με αυτό:

Πίνακας 10: Ο δρομολογητής αντικαθιστά τη διεύθυνση του δέκτη

SRC IP. Θύρα SRC. ΔΙΑΚΟΠΤΗΣ IP. Λιμενική θύρα.
12.62.100.200 6000 192.168.0.200 35777

Πίνακας 11: Ο δρομολογητής αντικατέστησε τη διεύθυνση του δέκτη

Το πακέτο έρχεται με επιτυχία στον κόμβο p1 Και, κοιτάζοντας το περιεχόμενο του πακέτου, ο κόμβος μαθαίνει για το εξωτερικό του IP. Διεύθυνση, δηλαδή, σχετικά με τη διεύθυνση του δρομολογητή στο εξωτερικό δίκτυο. Γνωρίζει επίσης το λιμάνι ότι ο δρομολογητής περνάει Nat..

Τι έπεται? Ποιο είναι το όφελος από αυτό; Η χρήση είναι μια εγγραφή στον πίνακα r1_nat.. Αν τώρα κάποιος θα στείλει στο δρομολογητή r1 Πακέτο με λιμάνι 888 Στη συνέχεια, ο δρομολογητής θα ανακατευθύνει αυτόν τον πακέτο κόμβο p1. Έτσι, δημιουργήθηκε ένα μικρό στενό πέρασμα στον κρυμμένο κόμβο p1.

Από το παραπάνω παράδειγμα, μπορείτε να πάρετε κάποια ιδέα για το έργο. Nat. και ουσία Ζάλισμα. Υπηρέτης. Γενικά, ο μηχανισμός ΠΑΓΟΣ και Αναισθητοποίηση / στροφή Οι διακομιστές απευθύνονται μόνο σε υπερβολικές περιορισμοί Nat..

Δεν υπάρχει κανένας δρομολογητής μεταξύ του κόμβου και του διακομιστή, αλλά αρκετές. Σε αυτή την περίπτωση, ο κόμβος θα λάβει τη διεύθυνση αυτού του δρομολογητή, η οποία είναι η πρώτη που θα μεταβεί στο ίδιο δίκτυο με το διακομιστή. Με άλλα λόγια, έχουμε τη διεύθυνση του δρομολογητή που συνδέεται με Ζάλισμα. Υπηρέτης. Για p2P. Επικοινωνίες Αυτό ακριβώς χρειαζόμαστε, αν δεν ξεχνάτε το γεγονός ότι η γραμμή που χρειάζεστε σε κάθε δρομολογητή θα προστεθεί στο τραπέζι στο τραπέζι Nat.. Επομένως, το αντίθετο θα είναι το ίδιο με το σίδηρο.

Στροφή Ο διακομιστής είναι μια βελτιωμένη Ζάλισμα. υπηρέτης. Από εδώ θα πρέπει να αφαιρεθεί αμέσως ότι οποιαδήποτε Στροφή Ο διακομιστής μπορεί να λειτουργήσει και πώς Ζάλισμα. υπηρέτης. Ωστόσο, υπάρχουν οφέλη. Αν ένα p2P. Η επικοινωνία είναι αδύνατη (όπως στο 3G. Δίκτυα), ο διακομιστής μεταβαίνει στη λειτουργία επαναλήπτη ( αναμετάδοση), Δηλαδή, λειτουργεί ως ενδιάμεσος. Φυσικά, όχι p2P. τότε δεν έρχεται, αλλά πέρα \u200b\u200bαπό τον μηχανισμό ΠΑΓΟΣ Οι κόμβοι πιστεύουν ότι επικοινωνούν άμεσα.

Σε ποιες περιπτώσεις χρειάζονται Στροφή υπηρέτης? Γιατί δεν αρκεί Ζάλισμα. Διακομιστές; Το γεγονός είναι ότι υπάρχουν πολλές ποικιλίες Nat.. Αντικαταστάται εξίσου IP. Η διεύθυνση και το λιμάνι, ωστόσο, ορισμένοι από αυτούς έχουν πρόσθετη προστασία από την "παραποίηση". Για παράδειγμα, στο Συμμετρικός Τραπέζι Nat. 2 Περισσότερες παραμέτρους αποθηκεύονται - IP. και τη θύρα απομακρυσμένου κόμβου. Το πακέτο από το εξωτερικό δίκτυο περνάει Nat. Στο εσωτερικό δίκτυο μόνο εάν η διεύθυνση πηγής και η θύρα συμπίπτει με τον πίνακα που καταγράφεται στον πίνακα. Επομένως, εστίαση S. Ζάλισμα. Ο διακομιστής αποτυγχάνει - πίνακας Nat. Αποθηκεύει τη διεύθυνση και τη θύρα Ζάλισμα. διακομιστές και όταν ο δρομολογητής παίρνει ένα πακέτο από Webrtc. Ο συνομιλητής, τον ρίχνει, καθώς "παραποιείται". Δεν προέρχεται από Ζάλισμα. Υπηρέτης.

Με αυτόν τον τρόπο Στροφή Ο διακομιστής είναι απαραίτητος στην περίπτωση που οι δύο συνομιλητές είναι για Συμμετρικός Nat. (Όλοι για δική του).

Σύντομη περίληψη

Ακολουθούν ορισμένες δηλώσεις σχετικά με οντότητες. Webrtc.που πρέπει πάντα να φυλάσσεται στο κεφάλι σας. Λεπτομερώς, περιγράφονται παραπάνω. Εάν κάποια από τις δηλώσεις δεν θα σας φανεί πλήρως σαφείς, επαναδιαβάστε τις σχετικές παραγράφους.

  • Ροή μέσων
    • Τα δεδομένα βίντεο και ήχου συσκευάζονται σε ροές μέσων
    • Οι ροές μέσων συγχρονίζουν τα κομμάτια των μέσων από τα οποία αποτελούνται
    • Διάφορα μέσα μαζικής ενημέρωσης δεν συγχρονίζονται μεταξύ τους.
    • Οι ροές μέσων μπορούν να είναι τοπικές και απομακρυσμένες, η κάμερα και το μικρόφωνο συνήθως συνδέονται με τα τοπικά, διαγραμμένα δεδομένα λήψης από το δίκτυο σε μια κωδικοποιημένη μορφή.
    • Τα κομμάτια των μέσων είναι δύο τύποι - για βίντεο και για ήχο
    • Τα κομμάτια των μέσων ενημέρωσης έχουν τη δυνατότητα να ενεργοποιήσουν / απενεργοποιούν
    • Τα κομμάτια μέσων αποτελούνται από κανάλια πολυμέσων
    • Τα Media Tracks συγχρονίζουν τα κανάλια πολυμέσων από τα οποία αποτελούνται
    • Οι ροές μέσων και τα κομμάτια πολυμέσων έχουν ετικέτες για τις οποίες μπορούν να διακριθούν
  • Περιγραφέας Περιγραφής
    • Η λαβή περιόδου σύνδεσης χρησιμοποιείται για τη λογική σύνδεση δύο κόμβων δικτύου.
    • Η χειρολαβή της περιόδου σύνδεσης αποθηκεύει πληροφορίες σχετικά με τις διαθέσιμες μεθόδους κωδικοποίησης βίντεο και δεδομένα ήχου.
    • Webrtc. χρησιμοποιεί έναν εξωτερικό μηχανισμό σηματοδότησης - το έργο των περιγραφικών περιγραφών προώθησης της περιόδου προώθησης ( sDP.) εμπίπτει στην αίτηση
    • Ο μηχανισμός της λογικής ένωσης αποτελείται από δύο στάδια - προτάσεις ( Προσφορά.) και απάντηση ( Απάντηση.)
    • Η δημιουργία του περιγραφέα περιγραφής της περιγραφής είναι αδύνατη χωρίς τη χρήση τοπικού ρεύματος μέσων στην περίπτωση της πρότασης ( Προσφορά.) και αδύνατο χωρίς να χρησιμοποιήσετε έναν περιγραφέα απομακρυσμένης περιόδου σύνδεσης σε περίπτωση απάντησης ( Απάντηση.)
    • Ο προκύπτων περιγραφέας πρέπει να επιτευχθεί Webrtc., Επιπλέον, δεν έχει σημασία αν αυτός ο περιγραφέας λαμβάνεται εξ αποστάσεως ή τοπικά από την ίδια εφαρμογή Webrtc.
    • Υπάρχει μια μικρή επεξεργασία του περιγραφέα της περιγραφής
  • Υποψηφίους
    • Υποψήφιος Υποψήφιος πάγος.) - Αυτή είναι η διεύθυνση του κόμβου στο δίκτυο
    • Η διεύθυνση του κόμβου μπορεί να είναι δική σας και ίσως η διεύθυνση του δρομολογητή ή Στροφή Υπηρέτης
    • Οι υποψήφιοι είναι πάντα πολύ
    • Ο υποψήφιος αποτελείται από IP. Διευθύνσεις, θύρα και είδος μεταφοράς ( TCP. ή UDP.)
    • Οι υποψήφιοι χρησιμοποιούνται για τη δημιουργία μιας φυσικής σύνδεσης δύο κόμβων στο δίκτυο.
    • Οι υποψήφιοι πρέπει επίσης να σταλούν μέσω του μηχανισμού σήματος
    • Οι υποψήφιοι πρέπει επίσης να μεταδώσουν την εφαρμογή Webrtc., ωστόσο, μόνο απομακρυσμένο
    • Σε ορισμένες εφαρμογές Webrtc. Οι υποψήφιοι μπορούν να μεταφερθούν μόνο μετά την εγκατάσταση του περιγραφέα περιοδείας
  • Stun / turn / ice / nat
    • Nat. - Μηχανισμός εξωτερικής πρόσβασης
    • Αρχική δρομολογητές υποστηρίζουν ένα ειδικό πίνακα Nat.
    • Ο δρομολογητής αντικαθιστά τις διευθύνσεις στις συσκευασίες - τη διεύθυνση της πηγής στον δικό του, σε περίπτωση που το πακέτο πηγαίνει στο εξωτερικό δίκτυο και τη διεύθυνση του δέκτη στη διεύθυνση κόμβου στο εσωτερικό δίκτυο, εάν η συσκευασία προήλθε από την εξωτερική δίκτυο
    • Για να παρέχετε πρόσβαση πολυκαναλικού στο εξωτερικό δίκτυο Nat. Χρησιμοποιεί θύρες
    • ΠΑΓΟΣ - μηχανισμός σάρωσης Nat.
    • Ζάλισμα. και Στροφή Διακομιστές - διακομιστές παραλαβής για παράκαμψη Nat.
    • Ζάλισμα. Ο διακομιστής σάς επιτρέπει να δημιουργήσετε τις απαραίτητες καταχωρήσεις στον πίνακα. Nat.και επιστρέφει επίσης την εξωτερική διεύθυνση του κόμβου
    • Στροφή Ο διακομιστής γενικεύει Ζάλισμα. μηχανισμός και το κάνει να λειτουργεί πάντα
    • Στις χειρότερες περιπτώσεις Στροφή Ο διακομιστής χρησιμοποιείται ως ενδιάμεσος ( αναμετάδοση), δηλ p2P. μετατρέπεται σε επικοινωνία πελάτη-πελάτη-πελάτη.

Webrtc. (Web Real-Time Communications) είναι μια τεχνολογία που επιτρέπει εφαρμογές ιστού και ιστότοπους να καταγράψουν και να μεταδώσουν επιλεκτικά ρεύματα μέσων ήχου ή / και βίντεο, καθώς και να ανταλλάξουν αυθαίρετα δεδομένα μεταξύ των προγραμμάτων περιήγησης, χωρίς υποχρεωτική χρήση των διαμεσολαβητών. Ένα σύνολο προτύπων που περιλαμβάνει την τεχνολογία WebRTC σας επιτρέπει να ανταλλάσσετε δεδομένα και να πραγματοποιήσετε ομοιόμορφη τηλεδιάσκεψη, χωρίς να χρειάζεται να εγκαταστήσετε plugins ή οποιοδήποτε άλλο λογισμικό τρίτων.

Το WebRTC αποτελείται από αρκετές διασυνδεδεμένες διεπαφές προγράμματος (API) και πρωτόκολλα που συνεργάζονται. Η τεκμηρίωση που βρίσκετε εδώ θα σας βοηθήσει να κατανοήσετε τα βασικά του WebRTC, πώς να διαμορφώσετε και να χρησιμοποιήσετε μια σύνδεση με τα δεδομένα και το μέσο πολυμέσων και πολλά άλλα.

Συμβατότητα

Δεδομένου ότι η εφαρμογή του WebRTC πρέπει να είναι στη διαδικασία του να γίνει και κάθε πρόγραμμα περιήγησης έχει τις δύο λειτουργίες WEBRTC, συνιστούμε έντονα τη χρήση της βιβλιοθήκης Polyfil Adapter.js, από την Google, προτού εργαστείτε στον κώδικα σας.

Το Adapter.Js χρησιμοποιεί σφήνες και πολυφιλόνια για ομαλές διαφορές σύνδεσης στις εφαρμογές WebRTC μεταξύ των πλαισίων που την υποστηρίζουν. Ο Adapter.Js επεξεργάζεται επίσης τα προθέματα των κατασκευαστών και άλλες διαφορές στις ονομαστικές ιδιότητες, διευκολύνοντας τη διαδικασία ανάπτυξης στο WebRTC, με το πιο συμβατό αποτέλεσμα. Η βιβλιοθήκη είναι επίσης διαθέσιμη ως πακέτο NPM.

Για να εξερευνήσετε περαιτέρω τη βιβλιοθήκη Adapter.js, κοιτάζουμε.

Έννοιες και χρήση του webrtc

Το WebRTC είναι ένας πολλαπλός σκοπός και μαζί με τα ισχυρά χαρακτηριστικά πολυμέσων για τον ιστό, συμπεριλαμβανομένων των υποδοχών ήχου και των βίντεο, την κοινή χρήση αρχείων, της σύλληψης οθόνης, της διαχείρισης ταυτότητας και της αλληλεπίδρασης με ξεπερασμένα τηλεφωνικά συστήματα, συμπεριλαμβανομένης της υποστήριξης για τη μετάδοση σημάτων κλήσης τόνων DTMF . Οι συνδέσεις μεταξύ κόμβων μπορούν να δημιουργηθούν χωρίς τη χρήση ειδικών οδηγών ή plug-ins, και συχνά χωρίς ενδιάμεσες υπηρεσίες.

Η σύνδεση μεταξύ των δύο κόμβων αντιπροσωπεύεται ως αντικείμενο διασύνδεσης RTCPEERConnection. Μόλις δημιουργηθεί η σύνδεση και ανοίξει, χρησιμοποιώντας το αντικείμενο RTCPEERConnection, Mediastream S) και / ή τα κανάλια δεδομένων (RTCDatachannel S) μπορούν να προστεθούν στη σύνδεση.

Οι ροές μέσων μπορούν να αποτελούνται από οποιοδήποτε αριθμό κομματιών (κομμάτια) πληροφοριών μέσων. Αυτά τα κομμάτια αντιπροσωπεύονται από τα αντικείμενα διασύνδεσης Mediastreamtrack και ενδέχεται να περιέχουν έναν ή περισσότερους τύπους γλωσσών μέσων, συμπεριλαμβανομένου του ήχου, του βίντεο, του κειμένου (όπως υπότιτλους ή κεφάλια κεφαλαίων). Τα περισσότερα νήματα αποτελούνται τουλάχιστον, μόνο ένα από τα ακουστικά κομμάτι (ένα κομμάτι ήχου) ή τα κομμάτια βίντεο και μπορούν να σταλούν και να ληφθούν ως ροές (μέσα μέσου) ή να αποθηκεύονται σε ένα αρχείο.

Επίσης, μπορείτε να χρησιμοποιήσετε τη σύνδεση μεταξύ των δύο κόμβων για να ανταλλάξετε αυθαίρετα δεδομένα χρησιμοποιώντας το αντικείμενο διασύνδεσης RTCDATACHANCHANDEL, το οποίο μπορεί να χρησιμοποιηθεί για τη μεταφορά πληροφοριών υπηρεσιών, δεδομένων αποθεμάτων, πακέτων κατάστασης παιχνιδιών, μεταφορά αρχείων ή κλειστών καναλιών δεδομένων.

Περισσότερες λεπτομέρειες και συνδέσμους προς τους σχετικούς οδηγούς και τα μαθήματα που χρειάζονται

Διεπαφές WebRTC

Λόγω του γεγονότος ότι το WebRTC παρέχει διεπαφές που εργάζονται μαζί για να εκτελέσουν διάφορα καθήκοντα, τα χωρίσουμε σε κατηγορίες. Ανατρέξτε στον δείκτη αλφαβητικού πλαισίου για γρήγορη πλοήγηση.

Σύνδεση και διαχείριση

Αυτές οι διεπαφές χρησιμοποιούνται για να διαμορφώσουν, να ανοίξουν και να ελέγξουν τις συνδέσεις WebRTC. Αντιπροσωπεύουν συνδέσεις ενιαίων μέσων ενημέρωσης, κανάλια δεδομένων και διεπαφές που χρησιμοποιούνται με την ανταλλαγή πληροφοριών σχετικά με τις δυνατότητες κάθε κόμβου για να επιλέξετε την καλύτερη διαμόρφωση κατά την εγκατάσταση μιας σύνδεσης πολυμέσων διπλής όψης.

Το RTCPEERCANCENCENCECANCECENCE να αντιπροσωπεύει τη σύνδεση WebRTC μεταξύ του τοπικού υπολογιστή και του απομακρυσμένου κόμβου. Χρησιμοποιείται για την αντιμετώπιση της επιτυχημένης μετάδοσης δεδομένων μεταξύ δύο κόμβων. Το RTCSessessGreScription παρουσιάζει παράμετροι περιόδου σύνδεσης. Κάθε rtcsessiondeScription περιέχει περιγραφές του τύπου που δείχνει ποιο μέρος της (προσφορά / αντίδραση) της διαδικασίας διαπραγμάτευσης, περιγράφει και την SDP SDP SDP. Το RTCICEDIDATE είναι υποψήφιος για την εγκατάσταση μιας σύνδεσης στο Internet (πάγου) για τη ρύθμιση των συνδέσεων RTCPEERConnection. Το RTCICETRANSPORT παρέχει πληροφορίες σχετικά με το εργαλείο σύνδεσης στο Internet (πάγος). Το RTCPEERConnectionIVEVEVEVEVEST αντιπροσωπεύει συμβάντα που συμβαίνουν με τους υποψηφίους πάγου συνήθως RTCPEERCANCENCELACECONCELACECANCECONCELACE. Ένας τύπος μεταδίδεται σε αυτό το αντικείμενο συμβάντος: ICECANDIDATE. Το RTCrTpender ελέγχει το στραβό και τη μετάδοση δεδομένων μέσω του αντικειμένου Mediastreamtrack για το αντικείμενο RTCPEERCANCENCENT. Το Rtcrtpreceiver διαχειρίζεται τα δεδομένα παραλαβής και αποκωδικοποίησης μέσω του αντικειμένου Mediastreamtrack για το αντικείμενο RTCPEERConnection. Το RTCTRACKEEVEVEVES δείχνει ότι δημιουργείται το νέο αντικείμενο εισερχόμενου Mediastreamtrack και ένα αντικείμενο τύπου RTCRTPREREVER προστέθηκε στο αντικείμενο RTCPEERConnection στο αντικείμενο RTCPEERConnection. Το RTCCertiftate παρουσιάζει ένα πιστοποιητικό που χρησιμοποιεί το αντικείμενο RTCPEERConnection. Το RTCDATACHANNEL αντιπροσωπεύει ένα κανάλι δεδομένων δύο μέσων μεταξύ δύο κόμβων συνδέσεων. Το Rtcdatachannelevent αντιπροσωπεύει γεγονότα που συμβαίνουν όταν το αντικείμενο του τύπου Rtcdatachannel είναι συνδεδεμένο στο αντικείμενο αντικειμένου Datachannel RTCPEERConnection. Το RTCDTMFSender ελέγχει την κωδικοποίηση και τη μετάδοση του ειδικού συναγερμού Twonal Multi-Retail (DTMF) για το αντικείμενο του τύπου RTCPEERConnection. Το RTCDTMFTONECHANDEVEVEVEVEVEVEVEVESENENS ένα εισερχόμενο συμβάν για να αλλάξει τον τόνο του συναγερμού πολλαπλών συχνοτήτων Darton (DTMF). Αυτό το συμβάν δεν εμφανίζεται (εκτός εάν υποδεικνύεται διαφορετικά) και δεν ακυρώνεται (εκτός εάν υποδεικνύεται διαφορετικά). Το RTCStatisReport Assinchronicly αναφέρει την κατάσταση για το μεταδιδόμενο αντικείμενο Mediastreamtrack. RTCidentityproviderRegistar καταχωρητής πάροχο αναγνώρισης (IDP). Το RTCidentityProvider ενεργοποιεί την ικανότητα του προγράμματος περιήγησης να ζητήσει τη δημιουργία ή την επαλήθευση των υποχρεώσεων ταυτοποίησης. Το RTCidentityAssertion αντιπροσωπεύει το αναγνωριστικό του απομακρυσμένου κόμβου της τρέχουσας σύνδεσης. Εάν ο κόμβος δεν έχει εγκατασταθεί ακόμη και επιβεβαιωθεί, ο σύνδεσμος προς τη διεπαφή θα επιστρέψει null. Μετά την εγκατάσταση δεν αλλάζει. Το RTCidentityEvent αντιπροσωπεύει έναν πάροχο αναγνώρισης αναγνωριστικού αναγνωριστικού συμβάντος (IDP). Τύπος αντικειμένου Rtcpeerconnection. Ένας τύπος μεταδίδεται σε αυτό το συμβάν ταυτότητας. Το RTCidentityErroRent αντιπροσωπεύει ένα αντικείμενο συμβάντος σφάλματος που σχετίζεται με τον πάροχο αναγνώρισης (IDP). Τύπος αντικειμένου Rtcpeerconnection. Δύο τύποι σφαλμάτων μεταδίδονται σε αυτό το συμβάν: IdpasserterRor και IdpvalidationError.

Εγχειρίδιο

Επισκόπηση της αρχιτεκτονικής WebRTC στο πλαίσιο του API, το οποίο χρησιμοποιείται από τους προγραμματιστές για τη δημιουργία και χρήση WebRTC, είναι ένα σύνολο πρωτοκόλλων δικτύου και πρότυπα σύνδεσης. Αυτή η αναθεώρηση είναι η βιτρίνα αυτών των προτύπων. Το WebRTC σας επιτρέπει να οργανώσετε μια σύνδεση στη λειτουργία κόμβου για τη μετάδοση αυθαίρετων δεδομένων, ρευμάτων ή βίντεο ή οποιουδήποτε συνδυασμού στο πρόγραμμα περιήγησης. Σε αυτό το άρθρο ρίχνουμε μια ματιά στη ζωή της συνεδρίας WebRTC, ξεκινώντας από την εγκατάσταση της σύνδεσης και ξεκινώντας από ολόκληρο το μονοπάτι πριν ολοκληρωθεί όταν δεν χρειάζεται πλέον. Η Webrtc WebRTC WebRTC Webrtc αποτελείται από αρκετές διασυνδεδεμένες διεπαφές προγραμματισμού (API) και πρωτόκολλα που συνεργάζονται για να παρέχουν υποστήριξη για ανταλλαγή δεδομένων και ροές μέσων μεταξύ δύο ή περισσοτέρων κόμβων. Αυτό το άρθρο παρουσιάζει μια σύντομη επισκόπηση καθενός από αυτά τα API και ποιο σκοπό επιδιώκει. Βασικά στοιχεία WEBRTC Αυτό το άρθρο θα σας κρατήσει τη δημιουργία μιας εφαρμογής RTC Cross-Browser. Μέχρι το τέλος αυτού του άρθρου, πρέπει να διαθέτετε ένα κανάλι εργασίας και ένα κανάλι μέσων που λειτουργούν στη λειτουργία Point-to-Point. Τα πρωτόκολλα WEBRTC σε αυτό το άρθρο παρουσιάζουν πρωτόκολλα, εκτός από την οποία έχει δημιουργηθεί API Webrtc. Αυτός ο οδηγός περιγράφει τον τρόπο με τον οποίο μπορείτε να χρησιμοποιήσετε τον κόμβο της μονάδας και τη σύνδεση