WebRTC به فایرفاکس، اندروید و iOS می رسد

در چند هفته گذشته اتفاقات زیادی با WebRTC افتاده است. زمان برای به روز رسانی!

به طور خاص، ما واقعاً از دیدن WebRTC در مرورگرها و پلتفرم‌های متعدد هیجان‌زده هستیم.

getUserMedia اکنون در کروم بدون پرچم و همچنین Opera و Firefox Nightly/Aurora در دسترس است (البته برای فایرفاکس باید تنظیمات برگزیده را تنظیم کنید ). به نسخه ی نمایشی بین مرورگر getUserMedia در simpl.info/gum نگاهی بیندازید - و نمونه های شگفت انگیز کریس ویلسون در استفاده از getUserMedia به عنوان ورودی برای Web Audio را بررسی کنید.

webkitRTCPeerConnection اکنون در کروم پایدار است و بدون پرچم است. پشتیبانی سرور TURN در Chrome 24 و بالاتر در دسترس است. یک نسخه نمایشی بسیار ساده از اجرای RTCPeerConnection Chrome در simpl.info/pc و یک برنامه چت ویدیویی عالی در apprtc.appspot.com وجود دارد. (یک کلمه توضیحی در مورد نام: پس از چندین بار تکرار، در حال حاضر به عنوان webkitRTCPeerConnection شناخته می‌شود. سایر نام‌ها و پیاده‌سازی‌ها منسوخ شده‌اند. هنگامی که فرآیند استاندارد تثبیت شد، پیشوند webkit حذف خواهد شد.)

WebRTC همچنین اکنون برای دسکتاپ در Firefox Nightly و Aurora و برای iOS و Android از طریق مرورگر Ericsson Bowser پیاده سازی شده است.

DataChannel

DataChannel یک WebRTC API برای کارایی بالا، تأخیر کم و ارتباط همتا به همتای داده های دلخواه است. API ساده و مشابه WebSocket است - اما ارتباط مستقیماً بین مرورگرها اتفاق می افتد، بنابراین DataChannel می تواند بسیار سریعتر از WebSocket باشد حتی اگر یک سرور رله (TURN) مورد نیاز باشد (زمانی که ' سوراخ کردن' برای مقابله با فایروال ها و NAT ها از کار می افتد).

DataChannel برای نسخه 25 کروم، پشت پرچم برنامه ریزی شده است - اگرچه ممکن است این نسخه را از دست بدهد. این فقط برای آزمایش خواهد بود، ممکن است کاملاً کاربردی نباشد، و ارتباط با اجرای فایرفاکس امکان پذیر نخواهد بود. DataChannel در نسخه های بعدی باید پایدارتر باشد و به گونه ای پیاده سازی شود که تعامل با DataChannel در فایرفاکس را امکان پذیر کند.

فایرفاکس Nightly/Aurora از mozGetUserMedia ، mozRTCPeerConnection و DataChannel پشتیبانی می کند (اما فراموش نکنید تنظیمات تنظیمات مورد نظر خود را تنظیم کنید!)

در اینجا یک اسکرین شات از DataChannel در حال اجرا در فایرفاکس آمده است:

اسکرین شات فایرفاکس دیتاکانل

این نسخه نمایشی در http://mozilla.github.com/webrtc-landing/data_test.html است. در اینجا یک قطعه کد آمده است:

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);
        }

اطلاعات بیشتر و نمایش‌های نمایشی برای پیاده‌سازی فایرفاکس از وبلاگ hacks.mozilla.org در دسترس است. پشتیبانی پایه WebRTC قرار است در ابتدای سال 2013 در فایرفاکس 18 منتشر شود، و پشتیبانی برای ویژگی‌های اضافی از جمله محدودیت‌های getUserMedia و createOffer/Answer و همچنین TURN (برای برقراری ارتباط بین مرورگرهای پشت فایروال) برنامه‌ریزی شده است.

برای اطلاعات بیشتر در مورد WebRTC، به شروع با WebRTC مراجعه کنید. حتی یک کتاب WebRTC وجود دارد که به صورت چاپی و چندین فرمت کتاب الکترونیکی موجود است.

محدودیت های رزولوشن

محدودیت در Chrome 24 و بالاتر اعمال شده است . از اینها می توان برای تنظیم مقادیر وضوح ویدیو برای تماس های getUserMedia() و RTCPeerConnection addStream() استفاده کرد.

یک مثال در simpl.info/getusermedia/constraints وجود دارد. با تعیین نقطه شکست و تغییر مقادیر، با محدودیت‌های مختلف بازی کنید.

چند نکته... محدودیت‌های getUserMedia که در یک برگه مرورگر تنظیم شده‌اند، بر محدودیت‌های همه برگه‌هایی که بعداً باز می‌شوند، تأثیر می‌گذارد. تنظیم یک مقدار مجاز برای محدودیت ها یک پیام خطای نسبتاً مرموز می دهد:

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

به همین ترتیب، اگر سعی کنید از getUserMedia از سیستم فایل محلی استفاده کنید، نه روی سرور، این خطا وجود دارد!

پخش جریانی تصویربرداری از صفحه نمایش

Tab Capture اکنون در کانال Chrome Dev در دسترس است. این امکان را فراهم می کند تا ناحیه قابل مشاهده برگه را به عنوان یک جریان ضبط کنید، که سپس می توان از آن به صورت محلی یا با addStream() RTCPeerConnection استفاده کرد. برای صحنه‌سازی و اشتراک‌گذاری صفحات وب بسیار مفید است. برای اطلاعات بیشتر به پیشنهاد ضبط محتوای برگه WebRTC مراجعه کنید.

با نظر دادن درباره این به‌روزرسانی، ما را در جریان بگذارید: ما دوست داریم بدانیم که با این APIها چه می‌کنید.

... و فراموش نکنید که هر اشکالی را که با آن مواجه می شوید در chromiumbugs.appspot.com ثبت کنید!