6. Eşler arası Veri API’si
Eşler arası Veri API’si, bir web uygulamasının eşler arasında genel uygulama verilerini gönderip almasına olanak tanır. Veri gönderme ve alma API’si, Web Sockets davranışını modeller.
6.2 RTCDataChannel
RTCDataChannel arayüzü, iki eş arasında çift yönlü bir veri
kanalını temsil eder. Bir RTCDataChannel, bir
RTCPeerConnection nesnesi üzerindeki bir fabrika yöntemi
aracılığıyla oluşturulur. Tarayıcılar arasında gönderilen mesajlar
[RFC8831] ve [RFC8832]’de açıklanmıştır.
RTCDataChannel ile bir bağlantı kurmanın iki yolu vardır.
Birinci yol, negotiated
RTCDataChannelInit sözlük üyesi ayarlanmamış ya da
varsayılan değeri olan false olarak ayarlanmış şekilde eşlerden birinde
basitçe bir RTCDataChannel oluşturmaktır. Bu, yeni kanalı
bant içi olarak duyurur ve diğer eşte karşılık gelen
RTCDataChannel nesnesiyle bir
RTCDataChannelEvent tetikler. İkinci yol ise uygulamanın
RTCDataChannel’ı müzakere etmesine izin vermektir. Bunu
yapmak için, negotiated
RTCDataChannelInit sözlük üyesi true olarak ayarlanmış bir
RTCDataChannel nesnesi oluşturun ve bant dışı olarak
(örneğin bir web sunucusu aracılığıyla) diğer tarafa,
negotiated RTCDataChannelInit sözlük üyesi
true ve aynı id ile karşılık gelen bir
RTCDataChannel oluşturması GEREKTİĞİNİ bildirin.
Bu, ayrı ayrı oluşturulmuş iki RTCDataChannel nesnesini
bağlar. İkinci yol, asimetrik özelliklere sahip kanallar oluşturmayı ve
eşleşen id’ler belirterek bildirime dayalı bir şekilde
kanallar oluşturmayı mümkün kılar.
Her RTCDataChannel, gerçek veriyi diğer eşe taşımak için
kullanılan ilişkili bir temel veri taşımasına sahiptir. Bir
RTCSctpTransport kullanan SCTP veri kanalları durumunda
(SCTP ilişkisinin durumunu temsil eder), temel veri taşıması SCTP akış
çiftidir. Sıralı teslim ayarları ve güvenilirlik modu gibi temel veri
taşımasının taşıma özellikleri, kanal oluşturulurken eş tarafından
yapılandırılır. Bir kanalın özellikleri, kanal oluşturulduktan sonra
değiştirilemez. Eşler arasındaki gerçek tel protokolü WebRTC DataChannel
Protocol belirtimi [RFC8831] tarafından tanımlanır.
Bir RTCDataChannel, farklı güvenilirlik modlarında
çalışacak şekilde yapılandırılabilir. Güvenilir bir kanal, verinin
yeniden iletimler yoluyla diğer eşe teslim edilmesini garanti eder.
Güvenilir olmayan bir kanal ise ya yeniden iletim sayısını sınırlayacak
şekilde (maxRetransmits) ya da iletimlerin (yeniden
iletimler dahil) izin verildiği bir süreyi ayarlayacak şekilde
(maxPacketLifeTime) yapılandırılır. Bu özellikler aynı anda
kullanılamaz ve böyle bir girişim bir hatayla sonuçlanır. Bu
özelliklerden hiçbirinin ayarlanmaması, güvenilir bir kanal ile
sonuçlanır.
createDataChannel ile oluşturulan ya da bir
RTCDataChannelEvent aracılığıyla dağıtılan bir
RTCDataChannel, başlangıçta
MUST "connecting" durumunda olmalıdır.
RTCDataChannel nesnesinin temel veri taşıması hazır
olduğunda, kullanıcı aracısı MUST
RTCDataChannel’ı açık olarak duyurmalıdır.
6.2.1 Bir veri kanalı oluşturma
Bir RTCDataChannel oluşturmak için aşağıdaki adımları
çalıştırın:
-
channel, yeni oluşturulmuş birRTCDataChannelnesnesi olsun. -
channel, [[ReadyState]] adlı bir iç yuvaya sahip olsun ve bu yuva "connecting" olarak başlatılsın. -
channel, [[BufferedAmount]] adlı bir iç yuvaya sahip olsun ve bu yuva0olarak başlatılsın. -
channel, [[DataChannelLabel]], [[Ordered]], [[MaxPacketLifeTime]], [[MaxRetransmits]], [[DataChannelProtocol]], [[Negotiated]] ve [[DataChannelId]] adlı iç yuvalara sahip olsun. -
channel, [[IsTransferable]] adlı bir iç yuvaya sahip olsun ve bu yuvatrueolarak başlatılsın. - Aşağıdaki adımı çalıştırmak için bir görev sıraya alın:
-
channel.[[IsTransferable]]değerinifalseolarak ayarlayın.
Bu görev, channel için veri kanalında mesaj alma
algoritması tarafından sıraya alınan herhangi bir görevden önce
çalıştırılmalıdır. Bu, bir RTCDataChannel aktarımı
sırasında hiçbir mesajın kaybolmamasını sağlar.
channel’ı döndürün.
6.2.2 Bir veri kanalını açık olarak duyurma
Kullanıcı aracısı bir RTCDataChannel’ı açık olarak
duyuracağı zaman, kullanıcı aracısı MUST aşağıdaki adımları
çalıştırmak üzere bir görev sıraya almalıdır:
-
İlişkili
RTCPeerConnectionnesnesinin[[IsClosed]]yuvasıtrueise, bu adımları sonlandırın. -
Duyurulacak
RTCDataChannelnesnesichannelolsun. -
channel.[[ReadyState]]"closing" veya "closed" ise, bu adımları sonlandırın. -
channel.[[ReadyState]]değerini "open" olarak ayarlayın. -
channelüzerindeopenadlı bir olay tetikleyin.
6.2.3 Bir veri kanalı örneğini duyurma
Bir temel veri taşıması duyurulacağı zaman (diğer eş,
negotiated ayarlanmamış ya da false olarak ayarlanmış bir
kanal oluşturduğunda), oluşturma sürecini başlatmayan eşin kullanıcı
aracısı MUST aşağıdaki adımları çalıştırmak üzere bir görev
sıraya almalıdır:
-
connection, temel veri taşımasıyla ilişkiliRTCPeerConnectionnesnesi olsun. -
connection.[[IsClosed]]trueise, bu adımları sonlandırın. - Bir RTCDataChannel oluşturun,
channel. -
configuration, WebRTC DataChannel Protocol belirtimi [RFC8832] tarafından tanımlanan temel veri taşımasını kurma sürecinin bir parçası olarak diğer eşten alınan bir bilgi paketi olsun. -
channel.[[DataChannelLabel]],[[Ordered]],[[MaxPacketLifeTime]],[[MaxRetransmits]],[[DataChannelProtocol]]ve[[DataChannelId]]iç yuvalarınıconfigurationiçindeki karşılık gelen değerlerle başlatın. -
channel.[[Negotiated]]değerinifalseolarak başlatın. -
channel’ıconnection.[[DataChannels]]’a ekleyin. -
channel.[[ReadyState]]değerini "open" olarak ayarlayın (ancak henüzopenolayını tetiklemeyin).
open olayı tetiklenmeden önce
datachannel olay işleyicisi içinde mesaj göndermeye
başlanmasına olanak tanır.
-
connectionüzerinde,channelözniteliğichannelolarak ayarlanmış şekildeRTCDataChannelEventarayüzünü kullanarakdatachanneladlı bir olay tetikleyin. - Veri kanalını açık olarak duyurun.
6.2.4 Kapatma prosedürü
6.2.4 Kapatma prosedürü
Bir RTCDataChannel nesnesinin temel veri taşıması, kapatma
prosedürü çalıştırılarak ani olmayan bir şekilde sonlandırılabilir. Bu
gerçekleştiğinde kullanıcı aracısı MUST aşağıdaki adımları
çalıştırmak üzere bir görev sıraya almalıdır:
-
Temel veri taşıması kapatılan
RTCDataChannelnesnesichannelolsun. -
channelile ilişkiliRTCPeerConnectionnesnesiconnectionolsun. -
channel’ıconnection.[[DataChannels]]’dan kaldırın. -
Prosedür
channel.closetarafından başlatılmadıysa,channel.[[ReadyState]]değerini "closing" olarak ayarlayın vechannelüzerindeclosingadlı bir olay tetikleyin. -
Aşağıdaki adımları
paralel olarakparalel olarak çalıştırın: -
channel’ın şu anda beklemede olan tüm mesajlarının gönderimini tamamlayın. -
channel’ın temel veri taşıması için tanımlanan kapatma prosedürünü izleyin: - SCTP tabanlı bir taşıma durumunda, [RFC8831], bölüm 6.7’yi izleyin.
-
İlişkili prosedürü izleyerek
channel’ın veri taşımasınıkapatın.closed
6.2.5 Bir veri kanalını kapalı olarak duyurma
Bir RTCDataChannel nesnesinin temel veri taşıması
kapatıldığında, kullanıcı aracısı MUST aşağıdaki adımları
çalıştırmak üzere bir görev sıraya almalıdır:
-
Temel veri taşıması kapatılan
RTCDataChannelnesnesichannelolsun. -
channel.[[ReadyState]]"closed" ise, bu adımları sonlandırın. -
channel.[[ReadyState]]değerini "closed" olarak ayarlayın. -
Hâlâ oradaysa,
channel’ıconnection.[[DataChannels]]’dan kaldırın. -
Taşıma bir hata ile kapatıldıysa,
channelüzerindeerrorDetailözniteliği "sctp-failure" olarak ayarlanmış şekildeRTCErrorEventarayüzünü kullanarakerroradlı bir olay tetikleyin. channelüzerinde close adlı bir olay tetikleyin.
6.2.6 Veri kanalı aktarımı
value ve dataHolder verildiğinde
RTCDataChannel aktarım adımları şunlardır:
-
value.[[IsTransferable]]falseise, birDataCloneErrorDOMException fırlatın. -
dataHolder.[[ReadyState]]değerinivalue.[[ReadyState]]olarak ayarlayın. -
dataHolder.[[DataChannelLabel]]değerinivalue.[[DataChannelLabel]]olarak ayarlayın. -
dataHolder.[[Ordered]]değerinivalue.[[Ordered]]olarak ayarlayın. -
dataHolder.[[MaxPacketLifeTime]]değerinivalue..[[MaxPacketLifeTime]]olarak ayarlayın -
dataHolder.[[MaxRetransmits]]değerinivalue.[[MaxRetransmits]]olarak ayarlayın. -
dataHolder.[[DataChannelProtocol]]değerinivalue.[[DataChannelProtocol]]olarak ayarlayın. -
dataHolder.[[Negotiated]]değerinivalue.[[Negotiated]]olarak ayarlayın. -
dataHolder.[[DataChannelId]]değerinivalue.[[DataChannelId]]olarak ayarlayın. -
dataHolder’ın temel veri taşımasınıvalue’nun temel veri taşıması olarak ayarlayın. -
value.[[IsTransferable]]değerinifalseolarak ayarlayın. -
value.[[ReadyState]]değerini "closed" olarak ayarlayın.
dataHolder ve channel verildiğinde
RTCDataChannel aktarım-alma adımları şunlardır:
-
channel.[[ReadyState]]değerinidataHolder.[[ReadyState]]ile başlatın. -
channel.[[DataChannelLabel]]değerinidataHolder.[[DataChannelLabel]]ile başlatın. -
channel.[[Ordered]]değerinidataHolder.[[Ordered]]ile başlatın. -
channel.[[MaxPacketLifeTime]]değerinidataHolder.[[MaxPacketLifeTime]]ile başlatın. -
channel.[[MaxRetransmits]]değerinidataHolder.[[MaxRetransmits]]ile başlatın. -
channel.[[DataChannelProtocol]]değerinidataHolder.[[DataChannelProtocol]]ile başlatın. -
channel.[[Negotiated]]değerinidataHolder.[[Negotiated]]ile başlatın. -
channel.[[DataChannelId]]değerinidataHolder.[[DataChannelId]]ile başlatın. -
channel’ın temel veri taşımasınıdataHolder’ın temel veri taşıması ile başlatın.
Yukarıdaki adımların
[[BufferedAmount]]’ı aktarmasına gerek yoktur; çünkü değeri her zaman
0 olacaktır. Bunun nedeni, bir
RTCDataChannel’ın yalnızca transferden önce send()
algoritması çağrılmadıysa aktarılabilmesidir.
Aktarım-alma adımları sırasında temel veri taşıması kapalıysa,
RTCDataChannel nesnesi, aktarım-alma adımlarından hemen
sonra bir veri kanalını kapalı olarak duyurma algoritması çalıştırılarak
kapatılacaktır.
6.2.7 Veri kanalı oluşturma sırasında hata
Bazı durumlarda kullanıcı aracısı, bir RTCDataChannel’ın
temel veri taşımasını oluşturamayabilir. Örneğin, veri kanalının
id değeri, SCTP el sıkışması sırasında [RFC8831]
uygulamaları tarafından müzakere edilen aralığın dışında olabilir.
Kullanıcı aracısı, bir RTCDataChannel’ın temel veri
taşımasının oluşturulamayacağını belirlediğinde, kullanıcı aracısı
MUST aşağıdaki adımları çalıştırmak üzere bir görev sıraya
almalıdır:
-
Kullanıcı aracısının temel veri taşımasını oluşturamadığı
RTCDataChannelnesnesichannelolsun. -
channel.[[ReadyState]]değerini "closed" olarak ayarlayın. -
channelüzerindeerrorDetailözniteliği "data-channel-failure" olarak ayarlanmış şekildeRTCErrorEventarayüzünü kullanarakerroradlı bir olay tetikleyin. channelüzerinde close adlı bir olay tetikleyin.
6.2.8 Bir veri kanalında mesaj alma
Bir RTCDataChannel mesajı, type türü ve
rawData verisiyle temel veri taşıması üzerinden
alındığında, kullanıcı aracısı MUST aşağıdaki adımları
çalıştırmak üzere bir görev sıraya almalıdır:
-
Kullanıcı aracısının bir mesaj aldığı
RTCDataChannelnesnesichannelolsun. -
channelile ilişkiliRTCPeerConnectionnesnesiconnectionolsun. -
channel.[[ReadyState]]"open" değilse, bu adımları sonlandırın verawData’yı atın. -
typevechannel.binaryTypeüzerinden anahtarlama yaparak alt adımı yürütün:
-
type,rawData’nın birstringolduğunu gösteriyorsa:
rawData’nın UTF-8 olarak çözümlenmesinin sonucunu temsil
eden bir DOMString olan datayı tanımlayın.
-
type,rawData’nın ikili olduğunu vebinaryType’ın"blob"olduğunu gösteriyorsa:
Ham veri kaynağı olarak rawData’yı içeren yeni bir
Blob nesnesi olan datayı tanımlayın.
-
type,rawData’nın ikili olduğunu vebinaryType’ın"arraybuffer"olduğunu gösteriyorsa:
Ham veri kaynağı olarak rawData’yı içeren yeni bir
ArrayBuffer nesnesi olan datayı tanımlayın.
-
channelüzerinde,originözniteliğiconnection.[[DocumentOrigin]]’in bir kökeninin serileştirilmesi ile başlatılmış vedataözniteliğidataile başlatılmış şekildeMessageEventarayüzünü kullanarakmessageadlı bir olay tetikleyin.
WebIDL[Exposed=(Window,DedicatedWorker), Transferable]
interface RTCDataChannel : EventTarget {
readonly attribute USVString label;
readonly attribute boolean ordered;
readonly attribute unsigned short? maxPacketLifeTime;
readonly attribute unsigned short? maxRetransmits;
readonly attribute USVString protocol;
readonly attribute boolean negotiated;
readonly attribute unsigned short? id;
readonly attribute RTCDataChannelState readyState;
readonly attribute unsigned long bufferedAmount;
[EnforceRange] attribute unsigned long bufferedAmountLowThreshold;
attribute EventHandler onopen;
attribute EventHandler onbufferedamountlow;
attribute EventHandler onerror;
attribute EventHandler onclosing;
attribute EventHandler onclose;
undefined close();
attribute EventHandler onmessage;
attribute BinaryType binaryType;
undefined send(USVString data);
undefined send(Blob data);
undefined send(ArrayBuffer data);
undefined send(ArrayBufferView data);
};
Öznitelikler
label USVString türünde · salt okunur
label özniteliği, bu
RTCDataChannel nesnesini diğer
RTCDataChannel nesnelerinden ayırt etmek için
kullanılabilecek bir etiketi temsil eder. Betiklerin aynı etiketle
birden fazla RTCDataChannel nesnesi oluşturmasına
izin verilir. Alınırken, öznitelik MUST
[[DataChannelLabel]]
yuvasının değerini döndürmelidir.
ordered boolean türünde · salt okunur
ordered özniteliği,
RTCDataChannel sıralıysa true, sırasız teslimata izin
veriliyorsa false döndürür. Alınırken, öznitelik MUST
[[Ordered]] yuvasının
değerini döndürmelidir.
maxPacketLifeTime unsigned short türünde · salt okunur
· null olabilir
maxPacketLifeTime özniteliği, güvenilir olmayan modda
iletimlerin ve yeniden iletimlerin gerçekleşebileceği zaman
penceresinin (milisaniye cinsinden) uzunluğunu döndürür.
Alınırken, öznitelik MUST
[[MaxPacketLifeTime]]
yuvasının değerini döndürmelidir.
maxRetransmits unsigned short türünde · salt okunur ·
null olabilir
maxRetransmits özniteliği, güvenilir olmayan modda
denenen yeniden iletimlerin azami sayısını döndürür. Alınırken,
öznitelik MUST
[[MaxRetransmits]]
yuvasının değerini döndürmelidir.
protocol USVString türünde · salt okunur
protocol özniteliği, bu
RTCDataChannel ile kullanılan alt protokolün adını
döndürür. Alınırken, öznitelik MUST
[[DataChannelProtocol]]
yuvasının değerini döndürmelidir.
negotiated boolean türünde · salt okunur
negotiated özniteliği, bu
RTCDataChannel’ın uygulama tarafından müzakere
edilmiş olması durumunda true, aksi halde false döndürür.
Alınırken, öznitelik MUST
[[Negotiated]] yuvasının
değerini döndürmelidir.
id unsigned short türünde · salt okunur · null olabilir
id özniteliği, bu RTCDataChannel için
kimliği döndürür. Değer başlangıçta null’dır; bu, kanal oluşturma
sırasında kimlik sağlanmadıysa ve SCTP taşımasının DTLS rolü henüz
müzakere edilmediyse döndürülecek değerdir. Aksi takdirde, betik
tarafından seçilen ya da [RFC8832]’ye göre kullanıcı aracısı
tarafından üretilen kimliği döndürür. Kimlik null olmayan bir
değere ayarlandıktan sonra değişmez. Alınırken, öznitelik
MUST
[[DataChannelId]] yuvasının
değerini döndürmelidir.
readyState RTCDataChannelState türünde ·
salt okunur
readyState özniteliği,
RTCDataChannel nesnesinin durumunu temsil eder.
Okunduğunda, öznitelik MUST
[[ReadyState]] yuvasının
değerini döndürmelidir.
bufferedAmount · unsigned long · salt okunur
bufferedAmount özniteliği, okunduğunda MUST
[[BufferedAmount]]
yuvasının değerini döndürmelidir. Bu öznitelik, send() kullanılarak kuyruğa alınmış uygulama verilerinin
(UTF-8 metin ve ikili veriler) bayt cinsinden sayısını açığa
çıkarır. Veri iletimi paralel olarak gerçekleşebilse de, yarış
koşullarını önlemek için döndürülen değer, geçerli görev olay
döngüsüne geri dönmeden önce MUST NOT azaltılmamalıdır.
Değer, protokol tarafından oluşturulan çerçeveleme ek yükünü veya
işletim sistemi ya da ağ donanımı tarafından yapılan arabelleğe
almayı içermez.
[[BufferedAmount]]
yuvasının değeri,
[[ReadyState]] yuvası
"open" olduğu sürece send() yönteminin her çağrısıyla yalnızca artar; ancak
kanal kapandıktan sonra yuva sıfıra sıfırlanmaz. Alttaki veri
taşıma katmanı kuyruğundan veri gönderdiğinde, kullanıcı aracısı
gönderilen bayt sayısı kadar
[[BufferedAmount]] değerini
azaltan bir görevi kuyruğa MUST almalıdır.
bufferedAmountLowThreshold · unsigned long
bufferedAmountLowThreshold özniteliği,
bufferedAmount değerinin düşük kabul edildiği eşiği
ayarlar. bufferedAmount bu eşikten yukarıdan eşik
değerine ya da altına düştüğünde,
bufferedamountlow olayı tetiklenir.
bufferedAmountLowThreshold, her yeni
RTCDataChannel için başlangıçta sıfırdır; ancak
uygulama bu değeri herhangi bir zamanda değiştirebilir.
onopen · EventHandlerBu olay işleyicisinin olay türü open'dır.
onbufferedamountlow · EventHandler
Bu olay işleyicisinin olay türü
bufferedamountlow'dur.
onerror · EventHandler
Bu olay işleyicisinin olay türü RTCErrorEvent'tir.
errorDetail "sctp-failure" içerir,
sctpCauseCode SCTP Neden Kodu değerini içerir ve
message SCTP Nedene-Özgü-Bilgi’yi, muhtemelen ek
metinle birlikte, içerir.
onclosing · EventHandlerBu olay işleyicisinin olay türü closing'dir.
onclose · EventHandlerBu olay işleyicisinin olay türü close'dur.
onmessage · EventHandlerBu olay işleyicisinin olay türü message'dır.
binaryType · BinaryType
binaryType özniteliği, en son ayarlandığı değeri
döndürür. Bir RTCDataChannel nesnesi
oluşturulduğunda, binaryType özniteliği
MUST "arraybuffer" dizgesiyle
ilklendirilmelidir.
Bu öznitelik, ikili verilerin betiklere nasıl sunulduğunu
denetler. Web Socket’in binaryType’ına bakınız.
Yöntemler
close()
RTCDataChannel’ı kapatır.
RTCDataChannel nesnesinin bu eş tarafından mı yoksa
uzak eş tarafından mı oluşturulduğuna bakılmaksızın çağrılabilir.
close yöntemi çağrıldığında, kullanıcı aracısı aşağıdaki
adımları MUST çalıştırmalıdır:
-
Kapatılmak üzere olan
RTCDataChannelnesnesichannelolsun. -
channel.[[ReadyState]]"closing" veya "closed" ise, bu adımları durdur. -
channel.[[ReadyState]]değerini "closing" olarak ayarla. - Kapatma yordamı henüz başlatılmadıysa, başlat.
send
Argüman türü string nesnesi olan send() algoritması
tarafından tanımlanan adımları çalıştır.
send
Argüman türü Blob nesnesi olan send() algoritması
tarafından tanımlanan adımları çalıştır.
send
Argüman türü ArrayBuffer nesnesi olan send()
algoritması tarafından tanımlanan adımları çalıştır.
send
Argüman türü ArrayBufferView nesnesi olan send()
algoritması tarafından tanımlanan adımları çalıştır.
send() yöntemi, farklı veri argümanı türlerini ele alacak
şekilde aşırı yüklenmiştir. Yöntemin herhangi bir sürümü çağrıldığında,
kullanıcı aracısı aşağıdaki adımları MUST çalıştırmalıdır:
-
Verinin gönderileceği
RTCDataChannelnesnesichannelolsun. -
channel.[[IsTransferable]]değerinifalseolarak ayarla. -
channel.[[ReadyState]]"open" değilse, birInvalidStateErrorfırlat. - Yöntem argümanının türüne karşılık gelen alt adımı yürüt:
stringnesnesi:
data, yöntem argümanının UTF-8 olarak kodlanmasının sonucu
olan bir bayt arabelleği olsun.
Blobnesnesi:
data, Blob nesnesinin temsil ettiği ham veri
olsun.
data’nın bir Blob nesnesinden fiilen
alınması eşzamansız olarak gerçekleşebilse de, kullanıcı aracısı
verilerin, send yönteminin çağrıldığı sırayla channel’ın
alttaki veri taşımasına kuyruğa alınmasını sağlayacaktır.
data’nın bayt boyutunun eşzamanlı olarak bilinmesi
gerekir.
ArrayBuffernesnesi:
data, ArrayBuffer nesnesi tarafından
tanımlanan arabellekte saklanan veri olsun.
ArrayBufferViewnesnesi:
data, ArrayBufferView nesnesinin başvurduğu
ArrayBuffer nesnesi tarafından tanımlanan arabelleğin
bölümünde saklanan veri olsun.
TypeError ile sonuçlanacaktır. Buna null ve
undefined dahildir.
-
data’nın bayt boyutu,channel’ın ilişkiliRTCSctpTransport’undakimaxMessageSizedeğerini aşarsa, birTypeErrorfırlat. -
data’yıchannel’ın alttaki veri taşıması üzerinde iletim için kuyruğa al. Yeterli arabellek alanı bulunmadığı içindata’yı kuyruğa almak mümkün değilse, birOperationErrorfırlat.
onerror aracılığıyla eşzamansız olarak
bilgilendirilecektir.
-
[[BufferedAmount]]yuvasının değerinidata’nın bayt boyutu kadar artır.
WebIDLdictionary RTCDataChannelInit {
boolean ordered = true;
[EnforceRange] unsigned short maxPacketLifeTime;
[EnforceRange] unsigned short maxRetransmits;
USVString protocol = "";
boolean negotiated = false;
[EnforceRange] unsigned short id;
};
Sözlük RTCDataChannelInit Üyeleri
ordered · boolean · varsayılanı true
false olarak ayarlanırsa, verinin sırasız teslim edilmesine izin verilir. Varsayılan true değeri, verinin sıralı olarak teslim edileceğini garanti eder.
maxPacketLifeTime · unsigned short
Onaylanmadığı takdirde kanalın veriyi ileteceği veya yeniden ileteceği süreyi (milisaniye cinsinden) sınırlar. Bu değer, kullanıcı aracısının desteklediği azami değeri aşarsa sınırlandırılabilir.
maxRetransmits · unsigned short
Bir kanalın veriyi başarıyla teslim edilemediğinde yeniden ileteceği deneme sayısını sınırlar. Bu değer, kullanıcı aracısının desteklediği azami değeri aşarsa sınırlandırılabilir.
protocol · USVString · varsayılanı
""
Bu kanal için kullanılan alt protokol adı.
negotiated · boolean · varsayılanı false
Varsayılan false değeri, kullanıcı aracısına kanalı bant-içi
duyurmasını ve diğer eşe karşılık gelen bir
RTCDataChannel nesnesini dağıtmasını söyler. true
olarak ayarlanırsa, kanalı müzakere etmek ve diğer eşte aynı
id ile bir RTCDataChannel nesnesi
oluşturmak uygulamanın sorumluluğundadır.
id türü unsigned short
negotiated true olduğunda kanal kimliğini ayarlar.
negotiated false olduğunda yok sayılır.
WebIDLenum RTCDataChannelState {
"connecting",
"open",
"closing",
"closed"
};
| Enum değeri | Açıklama |
|---|---|
connecting |
Kullanıcı aracısı alttaki veri taşımasını kurmaya çalışmaktadır.
Bu, createDataChannel ile oluşturulmuş olsun ya da
bir RTCDataChannelEvent’in parçası olarak
dağıtılsın, bir RTCDataChannel nesnesinin başlangıç
durumudur.
|
open |
Alttaki veri taşıması kurulmuştur ve iletişim mümkündür. |
closing |
Alttaki veri taşımasını kapatma yordamı başlatılmıştır. |
closed |
Alttaki veri taşıması closed durumuna getirilmiştir
veya kurulmamıştır.
|
: RTCDataChannelState Numaralandırmasının açıklaması