ในช่วง 2-3 สัปดาห์ที่ผ่านมา WebRTC มีการเปลี่ยนแปลงมากมาย ถึงเวลาอัปเดตแล้ว
โดยเฉพาะอย่างยิ่ง เราตื่นเต้นมากที่ได้เห็น WebRTC ใช้งานได้ในเบราว์เซอร์และแพลตฟอร์มต่างๆ
getUserMedia
พร้อมใช้งานใน Chrome โดยไม่ต้องใช้ Flag รวมถึง Opera และ Firefox Nightly/Aurora (แต่สำหรับ Firefox คุณจะต้องตั้งค่ากำหนด) ดูการสาธิต getUserMedia
ที่ใช้ได้กับทุกเบราว์เซอร์ได้ที่ simpl.info/gum และดูตัวอย่างที่น่าทึ่งของ Chris Wilson เกี่ยวกับการใช้ getUserMedia
เป็นอินพุตสำหรับ Web Audio
webkitRTCPeerConnection
พร้อมใช้งานใน Chrome เวอร์ชันเสถียรแล้วและไม่มี Flag การรองรับเซิร์ฟเวอร์ TURN พร้อมใช้งานใน Chrome เวอร์ชัน 24 ขึ้นไป คุณสามารถดูการสาธิตการใช้งาน RTCPeerConnection ของ Chrome ที่แสนง่ายดายได้ที่ simpl.info/pc และแอปพลิเคชันวิดีโอแชทที่ยอดเยี่ยมได้ที่ apprtc.appspot.com (ขออธิบายชื่อสักนิด หลังจากผ่านการปรับปรุงหลายครั้ง ตอนนี้แอปพลิเคชันนี้เรียกว่า webkitRTCPeerConnection
ส่วนชื่อและการใช้งานอื่นๆ นั้นเลิกใช้งานแล้ว เมื่อกระบวนการมาตรฐานมีความเสถียรแล้ว ระบบจะนำคำนำหน้า webkit
ออก)
นอกจากนี้ WebRTC ยังใช้งานได้บนเดสก์ท็อปใน Firefox Nightly และ Aurora รวมถึงบน iOS และ Android ผ่าน Bowser browser ของ Ericsson
DataChannel
DataChannel คือ WebRTC API สําหรับการสื่อสารแบบ Peer-to-Peer ที่ให้ประสิทธิภาพสูงและมีเวลาในการตอบสนองต่ำ ซึ่งสามารถส่งข้อมูลแบบใดก็ได้ API นี้ใช้งานง่ายคล้ายกับ WebSocket แต่การสื่อสารเกิดขึ้นระหว่างเบราว์เซอร์โดยตรง ดังนั้น DataChannel จึงทำงานได้เร็วกว่า WebSocket มาก แม้ว่าจะต้องใช้เซิร์ฟเวอร์รีเลย์ (TURN) ก็ตาม (เมื่อ "การเจาะช่องโหว่" เพื่อรับมือกับไฟร์วอลล์และ NAT ไม่สำเร็จ)
เราได้วางแผนที่จะเปิดตัว DataChannel ใน Chrome เวอร์ชัน 25 โดยใช้ Flag แต่อาจไม่ทันในเวอร์ชันนี้ การดำเนินการนี้จะเป็นแบบทดลองเท่านั้น อาจไม่ทำงานอย่างเต็มรูปแบบ และการสื่อสารจะไม่สามารถทำได้กับการติดตั้งใช้งาน 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 พื้นฐานจะพร้อมให้บริการใน Firefox 18 ในช่วงต้นปี 2013 และเราวางแผนที่จะรองรับฟีเจอร์เพิ่มเติมด้วย ซึ่งรวมถึงข้อจำกัด getUserMedia
และ createOffer/Answer รวมถึง TURN (เพื่ออนุญาตให้เบราว์เซอร์สื่อสารกันผ่านไฟร์วอลล์)
ดูข้อมูลเพิ่มเติมเกี่ยวกับ WebRTC ได้ที่การเริ่มต้นใช้งาน WebRTC นอกจากนี้ยังมีหนังสือ WebRTC ที่มีทั้งฉบับพิมพ์และ eBook หลายรูปแบบ
ข้อจำกัดด้านความละเอียด
ข้อจำกัดมีการใช้งานใน Chrome เวอร์ชัน 24 ขึ้นไป ซึ่งสามารถใช้เพื่อตั้งค่าความละเอียดของวิดีโอสำหรับการเรียก getUserMedia()
และ RTCPeerConnection addStream()
ดูตัวอย่างได้ที่ simpl.info/getusermedia/constraints ลองใช้ข้อจำกัดต่างๆ โดยการตั้งจุดหยุดพักและปรับค่า
สิ่งที่ควรทราบมีดังนี้ ข้อจำกัด getUserMedia
ที่ตั้งไว้ในแท็บเบราว์เซอร์ 1 แท็บจะมีผลกับข้อจำกัดของแท็บทั้งหมดที่เปิดขึ้นหลังจากนั้น การตั้งค่าค่าที่ไม่อนุญาตสำหรับข้อจำกัดจะแสดงข้อความแสดงข้อผิดพลาดที่ค่อนข้างคลุมเครือ
navigator.getUserMedia error: NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
เช่นเดียวกันกับข้อผิดพลาดที่คุณพยายามใช้ getUserMedia
จากระบบไฟล์ในเครื่อง ไม่ใช่ในเซิร์ฟเวอร์
การจับภาพหน้าจอสตรีมมิง
การจับภาพแท็บพร้อมใช้งานแล้วในเวอร์ชัน Chrome Dev ซึ่งช่วยให้จับภาพพื้นที่ที่มองเห็นได้ของแท็บเป็นสตรีมได้ จากนั้นจึงนำไปใช้ในเครื่องหรือกับ addStream()
ของ RTCPeerConnection ได้ มีประโยชน์มากสำหรับการแคสต์หน้าจอและการแชร์หน้าเว็บ ดูข้อมูลเพิ่มเติมได้ที่ข้อเสนอการจับเนื้อหาในแท็บ WebRTC
โปรดแจ้งให้เราทราบเกี่ยวกับประสบการณ์การใช้งานของคุณโดยแสดงความคิดเห็นเกี่ยวกับการอัปเดตนี้ เราอยากทราบสิ่งที่คุณทํากับ API เหล่านี้
...และอย่าลืมรายงานข้อบกพร่องที่พบที่ chromiumbugs.appspot.com