4. Eşler arası bağlantılar
4.8 Etkileşimli Bağlanabilirlik Kurulumu için Arayüzler
4.8.1 RTCIceCandidate Arayüzü
Bu arayüz, [RFC5245] Bölüm 2’de tanımlandığı üzere bir ICE adayını tanımlar. candidate,
sdpMid, sdpMLineIndex ve usernameFragment dışındaki kalan öznitelikler, iyi
biçimlendirilmiş olması durumunda candidateInitDict içindeki candidate üyesinin
ayrıştırılmasından türetilir.
[Exposed=Window]
interface RTCIceCandidate {
constructor(optional RTCIceCandidateInit candidateInitDict = {});
readonly attribute DOMString candidate;
readonly attribute DOMString? sdpMid;
readonly attribute unsigned short? sdpMLineIndex;
readonly attribute DOMString? foundation;
readonly attribute RTCIceComponent? component;
readonly attribute unsigned long? priority;
readonly attribute DOMString? address;
readonly attribute RTCIceProtocol? protocol;
readonly attribute unsigned short? port;
readonly attribute RTCIceCandidateType? type;
readonly attribute RTCIceTcpCandidateType? tcpType;
readonly attribute DOMString? relatedAddress;
readonly attribute unsigned short? relatedPort;
readonly attribute DOMString? usernameFragment;
readonly attribute RTCIceServerTransportProtocol? relayProtocol;
readonly attribute DOMString? url;
RTCIceCandidateInit toJSON();
};
Kurucu
constructor()
RTCIceCandidate() kurucusu, içeriği yeni RTCIceCandidate nesnesini başlatmak için
kullanılan candidateInitDict adlı bir sözlük bağımsız değişkeni alır.
Çağrıldığında, aşağıdaki adımları çalıştırın:
candidateInitDictiçindekisdpMidvesdpMLineIndexüyelerinin her ikisi denullise, birTypeErrorfırlatın.candidateInitDictile bir RTCIceCandidate oluşturmanın sonucunu döndürün.
Bir candidateInitDict sözlüğü ile bir RTCIceCandidate oluşturmak için aşağıdaki
adımları çalıştırın:
iceCandidatedeğişkenini yeni oluşturulmuş birRTCIceCandidatenesnesi olarak belirleyin.iceCandidateiçin aşağıdaki özniteliklere ait iç yuvaları oluşturun venullile başlatın:foundation,component,priority,address,protocol,port,type,tcpType,relatedAddressverelatedPort.iceCandidateiçin aşağıdaki özniteliklere ait iç yuvaları oluşturun ve bunlarıcandidateInitDictiçindeki adaşlarıyla başlatın:candidate,sdpMid,sdpMLineIndex,usernameFragment.candidatedeğişkeninicandidateInitDictiçindekicandidatesözlük üyesi olarak belirleyin.candidateboş bir dize değilse, aşağıdaki adımları çalıştırın:candidatedeğerinicandidate-attributedilbilgisini kullanarak ayrıştırın.candidate-attributeayrıştırması başarısız olursa, bu adımları iptal edin.- Ayrıştırma sonucundaki herhangi bir alan,
iceCandidateiçindeki karşılık gelen öznitelik için geçersiz bir değeri temsil ediyorsa, bu adımları iptal edin. iceCandidateiçindeki karşılık gelen iç yuvaları, ayrıştırılmış sonucun alan değerlerine ayarlayın.iceCandidatenesnesini döndürün.
RTCIceCandidate kurucusu, candidateInitDict içindeki sözlük üyeleri
için yalnızca temel ayrıştırma ve tür denetimi yapar. candidate, sdpMid,
sdpMLineIndex, usernameFragment değerlerinin karşılık gelen oturum tanımıyla iyi
biçimlendirilmişliğine ilişkin ayrıntılı doğrulama, RTCIceCandidate nesnesi
addIceCandidate() fonksiyonuna geçirildiğinde yapılır.
Geriye dönük uyumluluğu korumak için, candidate özniteliğinin ayrıştırılmasındaki
herhangi bir hata yok sayılır. Bu durumda, candidate özniteliği candidateInitDict içinde
verilen ham candidate dizesini tutar; ancak foundation, priority vb.
türetilmiş öznitelikler null olarak ayarlanır.
Öznitelikler
Aşağıdaki özniteliklerin çoğu [RFC5245] Bölüm 15.1’de tanımlanmıştır.
candidate (DOMString türünde, salt okunur)
Bu, [RFC5245] Bölüm 15.1’de tanımlandığı üzere candidate-attribute değerini taşır. Bu
RTCIceCandidate bir adayların sonu göstergesini veya eş-yansıtmalı (peer reflexive) bir uzak adayı
temsil ediyorsa, candidate boş bir dizedir.
sdpMid (DOMString türünde, salt okunur, boş olabilir)
null değilse, bu adayın ilişkilendirildiği ortam bileşeni için [RFC5888]’de tanımlanan ortam akışı
"identification-tag" değerini içerir.
sdpMLineIndex (unsigned short türünde, salt okunur, boş olabilir)
null değilse, bu adayın ilişkilendirildiği SDP içindeki ortam tanımının indeksini (sıfırdan
başlayarak) belirtir.
foundation (DOMString türünde, salt okunur, boş olabilir)
ICE’nin birden fazla RTCIceTransport üzerinde görünen adayları ilişkilendirmesine olanak tanıyan
benzersiz bir tanımlayıcıdır.
component (RTCIceComponent türünde, salt okunur, boş olabilir)
Adayın atanmış ağ bileşeni ("rtp" veya "rtcp"). Bu, candidate-attribute
içindeki component-id alanına karşılık gelir ve RTCIceComponent içinde tanımlandığı
şekilde dize temsiline dönüştürülmüştür.
priority (unsigned long türünde, salt okunur, boş olabilir)
Adayın atanmış önceliğidir.
address (DOMString türünde, salt okunur, boş olabilir)
Adayın adresidir; IPv4 adreslerini, IPv6 adreslerini ve tam nitelikli alan adlarını (FQDN) destekler. Bu,
candidate-attribute içindeki connection-address alanına karşılık gelir.
Uzak adaylar, örneğin [[SelectedCandidatePair]].remote
aracılığıyla açığa çıkarılabilir. Varsayılan olarak, kullanıcı aracısı açığa çıkarılan herhangi bir uzak aday için
address özniteliğini MUST null olarak bırakmalıdır. Bir
RTCPeerConnection örneği, web uygulaması tarafından addIceCandidate kullanılarak bir
adresi öğrendiğinde, kullanıcı aracısı bu yeni öğrenilen adrese sahip bir uzak adayı temsil eden
RTCPeerConnection örneğinin herhangi bir RTCIceCandidate’ında address
özniteliği değerini açığa çıkarabilir.
RTCIceCandidate örnekleri içinde uygulamaya görünür hale getirilen
adaylardaki adresler, WebRTC etkin olmayan bir tarayıcıda kullanıcının beklemiş olabileceğinden daha fazla bilgi
(ör. konum, yerel ağ topolojisi) açığa çıkarabilir.
Bu adresler her zaman uygulamaya açığa çıkarılır ve potansiyel olarak iletişim kurulan tarafa da açığa çıkarılır; ayrıca herhangi bir özel kullanıcı onayı olmaksızın da açığa çıkarılabilir (ör. veri kanallarıyla kullanılan eş bağlantıları için veya yalnızca ortam almak için).
Bu adresler ayrıca geçici veya kalıcı çapraz-köken durumları olarak kullanılabilir ve böylece cihazın parmak izi çıkarma yüzeyine katkıda bulunur. !(Bu bir parmak izi çıkarma vektörüdür.){width="15" height="21"}
Uygulamalar, RTCConfiguration içindeki iceTransportPolicy üyesi aracılığıyla ICE
aracısını yalnızca röle adaylarını raporlamaya zorlayarak, adreslerin iletişim kurulan tarafa açığa çıkarılmasını
geçici veya kalıcı olarak önleyebilir.
Uygulamanın kendisine açığa çıkarılan adresleri sınırlamak için, tarayıcılar [RFC8828]’de tanımlandığı üzere yerel adreslerin paylaşımıyla ilgili farklı ilkeleri kullanıcılarına sunabilir.
protocol (RTCIceProtocol türünde, salt okunur, boş olabilir)
Adayın protokolüdür ("udp"/"tcp"). Bu, candidate-attribute içindeki
transport alanına karşılık gelir.
port (unsigned short türünde, salt okunur, boş olabilir)
Adayın bağlantı noktasıdır.
type (RTCIceCandidateType türünde, salt okunur, boş olabilir)
Adayın türüdür. Bu, candidate-attribute içindeki candidate-types alanına karşılık
gelir.
tcpType (RTCIceTcpCandidateType türünde, salt okunur, boş olabilir)
protocol "tcp" ise, tcpType TCP adayının türünü temsil eder. Aksi halde,
tcpType null değerindedir. Bu, candidate-attribute içindeki
tcp-type alanına karşılık gelir.
relatedAddress (DOMString türünde, salt okunur, boş olabilir)
Röle veya yansıtmalı aday gibi başka bir adaydan türetilen bir aday için relatedAddress, türetildiği
adayın IP adresidir. Ana bilgisayar (host) adayları için relatedAddress null’dır. Bu,
candidate-attribute içindeki rel-address alanına karşılık gelir.
relatedPort (unsigned short türünde, salt okunur, boş olabilir)
Röle veya yansıtmalı aday gibi başka bir adaydan türetilen bir aday için relatedPort, türetildiği
adayın bağlantı noktasıdır. Ana bilgisayar adayları için relatedPort null’dır. Bu,
candidate-attribute içindeki rel-port alanına karşılık gelir.
usernameFragment (DOMString türünde, salt okunur, boş olabilir)
Bu, [RFC5245] Bölüm 15.4’te tanımlanan ufrag değerini taşır.
relayProtocol (RTCIceServerTransportProtocol türünde, salt okunur, boş olabilir)
"relay" türündeki yerel adaylar için bu, uç noktanın TURN sunucusuyla iletişim kurmak için
kullandığı protokoldür. Diğer tüm adaylar için null’dır.
url (DOMString türünde, salt okunur, boş olabilir)
"srflx" türündeki veya "relay" türündeki yerel adaylar için bu, adayın elde edildiği
ICE sunucusunun URL’sidir. Diğer tüm adaylar için null’dır.
Yöntemler
toJSON()
RTCIceCandidate arayüzünün toJSON() işlemini çağırmak için aşağıdaki
adımları çalıştırın:
jsondeğişkenini yeni birRTCIceCandidateInitsözlüğü olarak belirleyin.- «
candidate,sdpMid,sdpMLineIndex,usernameFragment» kümesindeki her bir öznitelik tanımlayıcısıattriçin: - Bu
RTCIceCandidatenesnesi verildiğinde,attrile tanımlanan özniteliğin temel değerini almanın sonucunuvalueolarak belirleyin. json[attr]değerinivalueolarak ayarlayın.jsonnesnesini döndürün.
WebIDLdictionary RTCIceCandidateInit {
DOMString candidate = "";
DOMString? sdpMid = null;
unsigned short? sdpMLineIndex = null;
DOMString? usernameFragment = null;
};
RTCIceCandidateInit Sözlüğü Üyeleri
candidate · (DOMString türünde · varsayılan "")
[RFC5245] Bölüm 15.1’de tanımlandığı üzere candidate-attribute değerini taşır. Bu, adayların sonu
göstergesini temsil ediyorsa, candidate boş bir dizedir.
sdpMid · (DOMString türünde · boş olabilir · varsayılan null)
null değilse, bu adayın ilişkilendirildiği ortam bileşeni için [RFC5888]’de tanımlanan ortam akışı
"identification-tag" değerini içerir.
sdpMLineIndex · (unsigned short türünde · boş olabilir · varsayılan null)
null değilse, bu adayın ilişkilendirildiği SDP içindeki ortam tanımının indeksini (sıfırdan
başlayarak) belirtir.
usernameFragment · (DOMString türünde · boş olabilir · varsayılan null)
null değilse, [RFC5245] Bölüm 15.4’te tanımlanan ufrag değerini taşır.
4.8.1.1 candidate-attribute Dilbilgisi
candidate-attribute dilbilgisi, RTCIceCandidate() kurucusunda
candidateInitDict içindeki candidate üyesini ayrıştırmak için kullanılır.
candidate-attribute için birincil dilbilgisi [RFC5245] Bölüm 15.1’de tanımlanmıştır. Buna ek olarak,
tarayıcı [RFC6544] Bölüm 4.5’te tanımlanan ICE TCP için dilbilgisi uzantısını MUST desteklemelidir.
Tarayıcı, diğer RFC’lerde tanımlanan candidate-attribute için başka dilbilgisi uzantılarını
MAY destekleyebilir.
4.8.1.2 RTCIceProtocol Enum’u
RTCIceProtocol, ICE adayının protokolünü temsil eder.
WebIDLenum RTCIceProtocol {
"udp",
"tcp"
};
| Enum değeri | Açıklama |
|---|---|
udp |
[RFC5245]’te tanımlandığı üzere bir UDP adayı. |
tcp |
[RFC6544]’te tanımlandığı üzere bir TCP adayı. |
RTCIceProtocol Numaralandırma açıklaması
4.8.1.3 RTCIceTcpCandidateType Enum’u
RTCIceTcpCandidateType, [RFC6544]’te tanımlandığı üzere ICE TCP adayının türünü temsil eder.
WebIDLenum RTCIceTcpCandidateType {
"active",
"passive",
"so"
};
| Enum değeri | Açıklama |
|---|
RTCIceTcpCandidateType Numaralandırma açıklaması
active ICE TCP adaylarını toplar.
4.8.1.4 RTCIceCandidateType Enum’u
RTCIceCandidateType, [RFC5245] Bölüm 15.1’de tanımlandığı üzere ICE adayının türünü temsil eder.
WebIDLenum RTCIceCandidateType {
"host",
"srflx",
"prflx",
"relay"
};
| Enum değeri | Açıklama |
|---|---|
host |
[RFC5245] Bölüm 4.1.1.1’de tanımlandığı üzere bir ana bilgisayar adayı. |
srflx |
[RFC5245] Bölüm 4.1.1.2’de tanımlandığı üzere bir sunucu yansıtmalı adayı. |
| Enum değeri | Açıklama |
|---|---|
prflx |
[RFC5245] Bölüm 4.1.1.2’de tanımlandığı üzere bir eş yansıtmalı adayı. |
relay |
[RFC5245] Bölüm 7.1.3.2.1’de tanımlandığı üzere bir röle adayı. |
RTCIceCandidateType Numaralandırma açıklaması
4.8.1.5 RTCIceServerTransportProtocol Enum’u
RTCIceServerTransportProtocol, [RFC8656] Bölüm 3.1’de tanımlandığı üzere istemci ile sunucu arasında
kullanılan taşıma protokolünün türünü temsil eder.
WebIDLenum RTCIceServerTransportProtocol {
"udp",
"tcp",
"tls",
};
| Enum değeri | Açıklama |
|---|---|
udp |
TURN istemcisi, sunucuya taşıma olarak UDP kullanmaktadır. |
tcp |
TURN istemcisi, sunucuya taşıma olarak TCP kullanmaktadır. |
tls |
TURN istemcisi, sunucuya taşıma olarak TLS kullanmaktadır. |
RTCIceServerTransportProtocol Numaralandırma açıklaması
4.8.2 RTCPeerConnectionIceEvent
RTCPeerConnection’ın icecandidate olayı, RTCPeerConnectionIceEvent
arayüzünü kullanır.
Bir RTCIceCandidate nesnesi içeren bir RTCPeerConnectionIceEvent olayı tetiklenirken,
hem sdpMid hem de sdpMLineIndex için değerler MUST dahil edilmelidir.
RTCIceCandidate "srflx" türünde veya "relay" türünde ise, olayın
url özelliği, adayın elde edildiği ICE sunucusunun URL’sine ayarlanmalıdır.
icecandidate olayı üç farklı türde gösterim için kullanılır:
- Bir aday toplanmıştır. Olayın
candidateüyesi normal şekilde doldurulur. Uzak eşe sinyallenmeli veaddIceCandidateiçine geçirilmelidir. - Bir
RTCIceTransport, adayların bir üretimini toplamayı tamamlamıştır ve [RFC8838] Bölüm 8.2’de tanımlandığı üzere bir adayların sonu göstergesi sağlamaktadır. Bu,candidate.candidatedeğerinin boş bir dizeye ayarlanmasıyla gösterilir.candidatenesnesi, adayların sonu göstergesini uzak eşe sağlamak için tipik bir ICE adayı gibi sinyallenmeli veaddIceCandidateiçine geçirilmelidir. - Tüm
RTCIceTransportlar aday toplamayı tamamlamıştır veRTCPeerConnectionnesnesininRTCIceGatheringStatedurumu "complete" değerine geçmiştir. Bu durum, olayıncandidateüyesininnullolarak ayarlanmasıyla belirtilir. Bu yalnızca geriye dönük uyumluluk için vardır ve bu olayın uzak eşe bildirilmesi gerekmez. "complete" durumundaki biricegatheringstatechangeolayına eşdeğerdir.
WebIDL[Exposed=Window]
interface RTCPeerConnectionIceEvent : Event {
constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict = {});
readonly attribute RTCIceCandidate? candidate;
readonly attribute DOMString? url;
};
Yapıcılar
RTCPeerConnectionIceEvent.constructor()
:
Öznitelikler
candidate · RTCIceCandidate türünde · salt okunur · boş olabilir
candidate özniteliği, olaya neden olan yeni ICE adayını içeren RTCIceCandidate
nesnesidir.
Aday toplamanın sona erdiğini belirtmek için bir olay üretildiğinde bu öznitelik
null olarak ayarlanır.
null aday içeren yalnızca tek bir olay
tetiklenir.
url · DOMString türünde · salt okunur · boş olabilir
url özniteliği, bu adayın toplanmasında kullanılan STUN veya TURN sunucusunu tanımlayan STUN ya da
TURN URL’sidir. Aday bir STUN veya TURN sunucusundan toplanmadıysa bu parametre null olarak
ayarlanır.
Candidate Correction 23: RTCPeerConnectionIceEvent.url özniteliğini kullanım dışı olarak
Bu öznitelik kullanım dışıdır; yalnızca eski uyumluluk nedenleriyle vardır. Adayın
url değerini tercih edin.
WebIDLdictionary RTCPeerConnectionIceEventInit : EventInit {
RTCIceCandidate? candidate;
DOMString? url;
};
Sözlük RTCPeerConnectionIceEventInit Üyeleri
candidate · RTCIceCandidate türünde · boş olabilir
RTCPeerConnectionIceEvent arayüzündeki candidate özniteliğine bakın.
url · DOMString türünde · boş olabilir
Bu adayın toplanmasında kullanılan STUN veya TURN sunucusunu tanımlayan STUN ya da TURN URL’sidir.
4.8.3 RTCPeerConnectionIceErrorEvent
RTCPeerConnection nesnesinin icecandidateerror olayı,
RTCPeerConnectionIceErrorEvent arayüzünü kullanır.
WebIDL[Exposed=Window]
interface RTCPeerConnectionIceErrorEvent : Event {
constructor(DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict);
readonly attribute DOMString? address;
readonly attribute unsigned short? port;
readonly attribute DOMString url;
readonly attribute unsigned short errorCode;
readonly attribute USVString errorText;
};
Yapıcılar
RTCPeerConnectionIceErrorEvent.constructor()
:
Öznitelikler
address · DOMString türünde · salt okunur · boş olabilir
address özniteliği, STUN veya TURN sunucusuyla iletişim kurmak için kullanılan yerel IP adresidir.
Çok bağlantılı (multihomed) bir sistemde, sunucuya ulaşmak için birden fazla arayüz
Yerel IP adresi değeri bir yerel adayın parçası olarak zaten açığa çıkarılmamışsa,
address özniteliği null olarak ayarlanır.
port · unsigned short türünde · salt okunur · boş olabilir
port özniteliği, STUN veya TURN sunucusuyla iletişim kurmak için kullanılan bağlantı noktasıdır.
address özniteliği null ise, port özniteliği de
null olarak ayarlanır.
url · DOMString türünde · salt okunur
url özniteliği, hatanın meydana geldiği STUN veya TURN sunucusunu tanımlayan STUN ya da TURN
URL’sidir.
errorCode · unsigned short türünde · salt okunur
errorCode özniteliği, STUN veya TURN sunucusu tarafından döndürülen sayısal STUN hata kodudur
[STUN-PARAMETERS].
Hiçbir ana makine (host) adayı sunucuya ulaşamazsa, errorCode STUN hata kodu
RTCIceGatheringState durumu
"gathering" iken sunucu URL’si başına yalnızca bir kez tetiklenir.
errorText · USVString türünde · salt okunur
errorText özniteliği, STUN veya TURN sunucusu tarafından döndürülen STUN gerekçe metnidir
[STUN-PARAMETERS].
Sunucuya ulaşılamadıysa, errorText hataya ilişkin ayrıntılar sağlayan uygulamaya
WebIDLdictionary RTCPeerConnectionIceErrorEventInit : EventInit {
DOMString? address;
unsigned short? port;
DOMString url;
required unsigned short errorCode;
USVString errorText;
};
Sözlük RTCPeerConnectionIceErrorEventInit
Üyeleri
address · DOMString türünde · boş olabilir
STUN veya TURN sunucusuyla iletişim kurmak için kullanılan yerel adres ya da null.
port · unsigned short türünde · boş olabilir
STUN veya TURN sunucusuyla iletişim kurmak için kullanılan yerel bağlantı noktası ya da null.
url · DOMString türünde
Hatanın meydana geldiği STUN veya TURN sunucusunu tanımlayan STUN ya da TURN URL’si.
errorCode · unsigned short türünde · zorunlu
STUN veya TURN sunucusu tarafından döndürülen sayısal STUN hata kodu.
errorText · USVString türünde
STUN veya TURN sunucusu tarafından döndürülen STUN gerekçe metni.