Son birkaç hafta içinde WebRTC ile ilgili çok şey oldu. Güncelleme zamanı geldi.
Özellikle WebRTC'nin birden fazla tarayıcıda ve platformda kullanıma sunulduğunu görmek bizi heyecanlandırıyor.
getUserMedia
artık Chrome'da işaretsiz olarak kullanılabilir. Ayrıca Opera ve Firefox Nightly/Aurora'da da kullanılabilir (ancak Firefox için tercihleri ayarlamanız gerekir). getUserMedia
'nin tarayıcılar arası demosuna simpl.info/gum adresinden göz atın ve Chris Wilson'ın getUserMedia
'yi Web Audio için giriş olarak kullanmayla ilgili müthiş örneklerine göz atın.
webkitRTCPeerConnection
artık Chrome'un kararlı sürümünde ve işaretsiz. TURN sunucusu desteği, Chrome 24 ve sonraki sürümlerde kullanılabilir. Chrome'un RTCPeerConnection uygulamasının son derece basit bir demosunu simpl.info/pc adresinde, mükemmel bir görüntülü sohbet uygulamasını ise apprtc.appspot.com adresinde bulabilirsiniz. (Ad hakkında bir açıklama: Birkaç iterasyondan sonra şu anda webkitRTCPeerConnection
olarak biliniyor. Diğer adlar ve uygulamalar için destek sonlandırıldı. Standartlar süreci istikrara kavuştuğunda webkit
ön eki kaldırılacaktır.)
WebRTC artık Firefox Nightly ve Aurora'da masaüstü için, Ericsson Bowser tarayıcı aracılığıyla ise iOS ve Android için de uygulandı.
DataChannel
DataChannel, rastgele verilerin yüksek performanslı, düşük gecikmeli, eşler arası iletişimi için bir WebRTC API'sidir. API, WebSocket'e benzer şekilde basittir ancak iletişim doğrudan tarayıcılar arasında gerçekleşir. Bu nedenle, bir aktarıcı (TURN) sunucusu gerekli olsa bile (güvenlik duvarları ve NAT'lerle başa çıkmak için "delik açma" işlemi başarısız olduğunda) DataChannel, WebSocket'ten çok daha hızlı olabilir.
DataChannel, Chrome 25 sürümü için planlanmıştır ancak bu sürüme dahil edilmeyebilir. Bu özellik yalnızca deneme amaçlıdır, tam olarak işlevsel olmayabilir ve Firefox uygulamasında iletişim mümkün değildir. Sonraki sürümlerdeki DataChannel daha kararlı olacak ve Firefox'ta DataChannel ile etkileşimi sağlayacak şekilde uygulanacaktır.
Firefox Nightly/Aurora, mozGetUserMedia
, mozRTCPeerConnection
ve DataChannel
'yi destekler (ancak about:config tercihlerinizi ayarlamayı unutmayın!)
Aşağıda, Firefox'ta çalışan DataChannel'in ekran görüntüsü verilmiştir:

Bu demo http://mozilla.github.com/webrtc-landing/data_test.html adresindedir. Aşağıda bir kod snippet'i verilmiştir:
pc1.onconnection = function() {
log("pc1 onConnection ");
dc1 = pc1.createDataChannel("This is pc1",{}); // reliable (TCP-like)
dc1 = pc1.createDataChannel("This is pc1",{outOfOrderAllowed: true, maxRetransmitNum: 0}); // unreliable (UDP-like)
log("pc1 created channel " + dc1 + " binarytype = " + dc1.binaryType);
channel = dc1;
channel.binaryType = "blob";
log("pc1 new binarytype = " + dc1.binaryType);
// Since we create the datachannel, don't wait for onDataChannel!
channel.onmessage = function(evt) {
if (evt.data instanceof Blob) {
fancy_log("*** pc2 sent Blob: " + evt.data + ", length=" + evt.data.size,"blue");
} else {
fancy_log('pc2 said: ' + evt.data, "blue");
}
}
channel.onopen = function() {
log("pc1 onopen fired for " + channel);
channel.send("pc1 says Hello...");
log("pc1 state: " + channel.state);
}
channel.onclose = function() {
log("pc1 onclose fired");
};
log("pc1 state:" + channel.readyState);
}
Firefox uygulamasıyla ilgili daha fazla bilgi ve demo için hacks.mozilla.org blogunu ziyaret edin. Temel WebRTC desteğinin 2013'ün başlarında Firefox 18'de kullanıma sunulması planlanıyor. getUserMedia
ve createOffer/Answer kısıtlamaları ile TURN (güvenlik duvarlarının arkasındaki tarayıcılar arasında iletişime izin vermek için) gibi ek özellikler için de destek sunulması planlanıyor.
WebRTC hakkında daha fazla bilgi için WebRTC'yi kullanmaya başlama başlıklı makaleyi inceleyin. Hatta basılı ve çeşitli e-kitap biçimlerinde kullanılabilen bir WebRTC kitabı bile var.
Çözünürlük Kısıtlamaları
Kısıtlama, Chrome 24 ve sonraki sürümlerde uygulanmıştır. Bunlar, getUserMedia()
ve RTCPeerConnection addStream()
çağrıları için video çözünürlüğünün değerlerini ayarlamak amacıyla kullanılabilir.
simpl.info/getusermedia/constraints adresinde bir örnek bulabilirsiniz. Bir kesme noktası ayarlayarak ve değerlerde ayarlamalar yaparak farklı kısıtlamalarla oynayın.
Dikkat edilmesi gereken birkaç nokta... Bir tarayıcı sekmesinde ayarlanan getUserMedia
kısıtlamaları, daha sonra açılan tüm sekmelerin kısıtlamalarını etkiler. Kısıtlamalar için izin verilmeyen bir değer ayarlandığında oldukça gizemli bir hata mesajı gösterilir:
navigator.getUserMedia error: NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
Benzer şekilde, getUserMedia
dosyasını bir sunucuda değil de yerel dosya sisteminden kullanmayı denerseniz de hata alırsınız.
Akış sırasında ekran görüntüsü alma
Sekme yakalama özelliği artık Chrome Dev kanalında kullanıma sunuldu. Bu sayede sekmenin görünür alanını bir akış olarak yakalayabilirsiniz. Bu akış daha sonra yerel olarak veya RTCPeerConnection'ın addStream()
ile kullanılabilir. Ekran yansıtma ve web sayfası paylaşımı için çok kullanışlıdır. Daha fazla bilgi için WebRTC Sekme İçerik Yakalama önerisini inceleyin.
Bu güncellemeyle ilgili yorum yaparak gelişmelerden bizi haberdar edin. Bu API'leri nasıl kullandığınızı öğrenmekten memnuniyet duyarız.
Karşılaştığınız hataları chromiumbugs.appspot.com adresinden bildirmeyi unutmayın.