WebRTC; Firefox, Android ve iOS'u kullanıyor

Son birkaç hafta içinde WebRTC ile çok şey oldu. Güncelleme zamanı geldi.

Özellikle, WebRTC'nin birden çok tarayıcıda ve platformda kullanıma sunulduğunu görmek bizi gerçekten heyecanlandırıyor.

getUserMedia artık Chrome'da, ayrıca Opera ve Firefox Nightly/Aurora'nın yanı sıra bayrak olmadan kullanılabilir (ancak Firefox için tercihleri ayarlamanız gerekir). simpl.info/gum adresinde tarayıcılar arası getUserMedia demosuna göz atın ve Chris Wilson'ın Web Audio girişi olarak getUserMedia kullanımının harika örneklerine göz atın.

webkitRTCPeerConnection, Chrome'un kararlı sürümünde ve işaretli değil. TURN sunucu 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 ve apprtc.appspot.com adresinde harika bir görüntülü sohbet uygulamasını bulabilirsiniz. (Adını birkaç kez tekrarladıktan sonra webkitRTCPeerConnection adıyla biliniyor. Diğer adlar ve uygulamalar kullanımdan kaldırılmıştır. Standartlar süreci kararlı hale geldiğinde webkit öneki kaldırılır.)

WebRTC, artık Firefox Nightly ve Aurora masaüstü için, iOS ve Android için de Ericsson Bowser tarayıcı üzerinden uygulanmaktadır.

DataChannel

DataChannel, rastgele verilerin yüksek performanslı, düşük gecikmeli, eşler arası iletişimi için bir WebRTC API'sidir. API, WebSocket'e basit benzer. Ancak iletişim doğrudan tarayıcılar arasında gerçekleşir. Bu nedenle, bir geçiş (TURN) sunucusu gerekli olsa bile DataChannel'dan çok daha hızlı olabilir (güvenlik duvarları ve NAT'lerle başa çıkmak için "delik açma" işlemi başarısız olduğunda).

DataChannel'ın Chrome'un 25 sürümü için bir bayrakla birlikte kullanılması planlanmıştır (ancak bu sürümde görünmeyebilir.) Bu yalnızca deneme amaçlıdır, tamamen işlevsel olmayabilir ve Firefox uygulamasıyla iletişim kurulamaz. Sonraki sürümlerde bulunan DataChannel daha kararlı olmalı ve Firefox'ta DataChannel ile etkileşimi mümkün kılacak şekilde uygulanacaktır.

Firefox Gecelik/Aurora; mozGetUserMedia, mozRTCPeerConnection ve DataChannel'yi destekler (ancak about:config tercihlerinizi ayarlamayı unutmayın!)

Aşağıda, Firefox'ta çalışan DataChannel'ın ekran görüntüsünü görebilirsiniz:

Firefox DataChannel ekran görüntüsü

Bu demoyu http://mozilla.github.com/webrtc-landing/data_test.html adresinde bulabilirsiniz. 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 bilgiyi ve demoları hacks.mozilla.org blogunda bulabilirsiniz. Temel WebRTC desteğinin 2013'ün başında Firefox 18 sürümünde yayınlanması planlanmaktadır. Ayrıca, getUserMedia ve createOffer/Answer kısıtlamalarının yanı sıra TURN (güvenlik duvarlarının arkasındaki tarayıcılar arasında iletişime izin vermek için) gibi ek özellikler için destek sunulması planlanmaktadır.

WebRTC hakkında daha fazla bilgi edinmek için WebRTC'yi Kullanmaya Başlama başlıklı makaleye bakın. Hatta, basılı ve çeşitli e-Kitap biçimlerinde bir WebRTC kitabı bulunmaktadır.

Çözünürlük Kısıtlamaları

Chrome 24 ve sonraki sürümlerde kısıtlama uygulandı. Bunlar getUserMedia() ve RTCPeerConnection addStream() çağrılarının video çözünürlüğü değerlerini ayarlamak için kullanılabilir.

simpl.info/getusermedia/restrictionts adresinde bir örnek bulabilirsiniz. Ayrılma noktası belirleyerek ve değerleri değiştirerek farklı kısıtlamalarla denemeler yapın.

Birkaç yanlışlık... Bir tarayıcı sekmesinde ayarlanan getUserMedia kısıtlamaları, daha sonra açılan tüm sekmelerdeki kısıtlamaları etkiler. Kısıtlamalar için izin verilmeyen bir değerin ayarlanması, oldukça şifreli bir hata mesajı verir:

navigator.getUserMedia error:  NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}

getUserMedia ürününü sunucudan değil, yerel dosya sisteminden kullanmaya çalışırsanız da aynı şekilde karşılaşırsınız.

Yayında ekran görüntüsü alma

Sekme Yakalama artık Chrome Geliştirici kanalında kullanılabilir. Bu, sekmenin görünür alanının bir akış olarak yakalanmasını mümkün kılar. Daha sonra, bu alan yerel olarak veya RTCPeerConnection'ın addStream() özelliği ile kullanılabilir. Ekran görüntüsünü hazırlama ve web sayfası paylaşımı için çok kullanışlıdır. Daha fazla bilgi için WebRTC Sekme İçeriği Yakalama teklifine bakın.

Bu güncellemeyle ilgili yorum yaparak bizi haberdar edin: Bu API'lerle neler yaptığınızı öğrenmekten memnuniyet duyarız.

...ve karşılaştığınız hataları chromiumbugs.appspot.com adresinden bildirmeyi unutmayın!