حدثت تغييرات كثيرة في WebRTC خلال الأسابيع القليلة الماضية. حان وقت تحديث التطبيق
وعلى وجه الخصوص، يسرّنا جدًا أن نرى WebRTC متاحًا على متصفّحات ومنصات متعدّدة.
تتوفّر علامة getUserMedia
الآن في Chrome بدون أي علامات، بالإضافة إلى Opera وFirefox Nightly/Aurora (على الرغم من أنّه عليك ضبط الإعدادات المفضّلة في Firefox). يمكنك الاطّلاع على العرض التوضيحي لgetUserMedia
المتوافق مع جميع المتصفّحات على الرابط simpl.info/gum، ويمكنك أيضًا الاطّلاع على الأمثلة الرائعة التي قدّمها "كريس ويلسون" لاستخدام getUserMedia
كمدخل لواجهة برمجة التطبيقات Web Audio.
أصبحت webkitRTCPeerConnection
متوفّرة الآن في الإصدار الثابت من Chrome بدون أي علامة. تتوفّر ميزة توافق خادم TURN في الإصدار 24 من Chrome والإصدارات الأحدث. يتوفّر عرض توضيحي بسيط جدًا لتنفيذ RTCPeerConnection في Chrome على الرابط simpl.info/pc وتطبيق رائع لمحادثات الفيديو على الرابط apprtc.appspot.com. (شرح حول الاسم: بعد عدة تكرارات، يُعرف حاليًا باسم webkitRTCPeerConnection
. وتم إيقاف الأسماء وعمليات التنفيذ الأخرى نهائيًا. عندما تستقر عملية وضع المعايير، ستتم إزالة البادئة webkit
.)
تم أيضًا تنفيذ WebRTC لأجهزة الكمبيوتر المكتبي في Firefox Nightly وAurora، ولأجهزة iOS وAndroid من خلال متصفّح Bowser من Ericsson.
DataChannel
DataChannel هي واجهة برمجة تطبيقات WebRTC لتوفير اتصالات بين الأجهزة من نظير إلى نظير للبيانات العشوائية بأداء عالٍ ووقت استجابة منخفض. واجهة برمجة التطبيقات بسيطة، وتشبه WebSocket، ولكن يتم الاتصال مباشرةً بين المتصفّحات، لذا يمكن أن يكون DataChannel أسرع بكثير من WebSocket حتى إذا كان خادم الإعادة (TURN) مطلوبًا (عند تعذُّر "إنشاء ثقب" للتعامل مع جدران الحماية وشبكات ترجمة العناوين).
من المخطّط طرح DataChannel في الإصدار 25 من Chrome، ولكن قد لا يتوفّر في هذا الإصدار. سيكون هذا الإجراء لأغراض تجريبية فقط، وقد لا يكون ذا وظيفة كاملة، ولن يكون التواصل ممكنًا من خلال تنفيذ Firefox. من المفترض أن تكون DataChannel في الإصدارات الأحدث أكثر ثباتًا، وسيتم تنفيذها لتفعيل التفاعل مع DataChannel في Firefox.
يتيح Firefox Nightly/Aurora استخدام mozGetUserMedia
وmozRTCPeerConnection
وDataChannel
(ولكن لا تنسَ ضبط الإعدادات المفضّلة في about:config).
في ما يلي لقطة شاشة لواجهة DataChannel التي تعمل في Firefox:

يمكنك العثور على هذا العرض التوضيحي على الرابط 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);
}
يمكنك الاطّلاع على مزيد من المعلومات والعروض التوضيحية لتنفيذ Firefox من خلال مدونة hacks.mozilla.org. من المفترض أن يتم طرح ميزات WebRTC الأساسية في الإصدار 18 من Firefox في بداية عام 2013، ومن المخطّط توفير ميزات إضافية، بما في ذلك getUserMedia
والقيود المفروضة على createOffer/Answer، بالإضافة إلى TURN (للسماح بالاتصال بين المتصفّحات التي تعمل خلف جدران الحماية).
لمزيد من المعلومات عن WebRTC، يُرجى الاطّلاع على مقالة البدء في استخدام WebRTC. يتوفّر أيضًا كتاب WebRTC، وهو متاح بالنسخة المطبوعة وبتنسيقات متعددة للكتب الإلكترونية.
قيود الدقة
تم تنفيذ Constraint في الإصدار 24 من Chrome والإصدارات الأحدث. ويمكن استخدامها لضبط قيم دقة الفيديو لمكالمات getUserMedia()
وRTCPeerConnection addStream()
.
يمكنك الاطّلاع على مثال على simpl.info/getusermedia/constraints. جرِّب قيودًا مختلفة من خلال ضبط نقطة توقّف وتعديل القيم.
بعض الملاحظات... getUserMedia
تؤثر القيود التي يتم ضبطها في علامة تبويب واحدة للمتصفّح في القيود المفروضة على جميع علامات التبويب التي يتم فتحها لاحقًا. يؤدي ضبط قيمة غير مسموح بها للقيود إلى ظهور رسالة خطأ غامضة إلى حدٍ ما:
navigator.getUserMedia error: NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
سيحدث الخطأ نفسه إذا حاولت استخدام getUserMedia
من نظام الملفات المحلي، وليس على خادم.
التقاط شاشة البث
تتوفّر ميزة "التقاط علامة التبويب" الآن في قناة مطوّري برامج Chrome. يتيح ذلك تسجيل المنطقة المرئية من علامة التبويب كبث، ويمكن استخدام هذا البث بعد ذلك على الجهاز أو باستخدام addStream()
في RTCPeerConnection. مفيدة جدًا لتسجيل الشاشة ومشاركة صفحات الويب لمزيد من المعلومات، يمكنك الاطّلاع على اقتراح WebRTC لميزة "التقاط محتوى علامة التبويب".
يُرجى إعلامنا برأيك في هذه التعديلات من خلال التعليق على هذا المنشور. يهمّنا معرفة ما تفعله باستخدام واجهات برمجة التطبيقات هذه.
ولا تنسَ الإبلاغ عن أي أخطاء تواجهها على chromiumbugs.appspot.com.