WebRTC มีประโยชน์กับแอปเบบี้มอนิเตอร์ เพราะส่งเสียงและวิดีโอสดได้อย่างน่าเชื่อถือ แต่ไม่ใช่ตรารับรองคุณภาพของผลิตภัณฑ์ทั้งหมด การจับคู่อุปกรณ์อย่างปลอดภัย สิทธิ์การเข้าถึงที่เข้าใจง่าย และการแสดงสถานะที่ชัดเจน ยังต้องได้รับการออกแบบอย่างดีจากตัวแอปเอง
อภิธานศัพท์แบบสั้น
- การจับภาพและเสียง
- แอปขอสิทธิ์ใช้ไมโครโฟนและกล้อง เพื่อรับสื่อสดจากอุปกรณ์
- การเชื่อมต่อระหว่างอุปกรณ์
- การเชื่อมต่อที่ส่งเสียง วิดีโอ และอาจรวมถึงข้อมูลระหว่างอุปกรณ์สองเครื่องแบบสด
- ช่องข้อมูล
- ช่องทางเสริมสำหรับข้อความควบคุม เช่น เหตุการณ์กดพูดคุยหรือการเปิดปิดกล้อง
- ICE / TURN
- เทคนิคการเชื่อมต่อที่ช่วยให้อุปกรณ์ค้นหาเส้นทางที่ใช้งานได้ผ่านเราเตอร์และ NAT รวมถึงในสภาพเครือข่ายที่มีข้อจำกัด
โครงสร้างแบบย่อ
สิ่งที่มักเกิดขึ้นระหว่างการใช้งานเบบี้มอนิเตอร์ผ่าน WebRTC
อุปกรณ์แลกเปลี่ยนข้อมูลการเชื่อมต่อ
ผ่านการส่งสัญญาณ ทั้งสองฝ่ายจะทราบว่าสามารถติดต่อกันได้ที่ใด
อนุญาตการเข้าถึงสื่อบนอุปกรณ์
อุปกรณ์จะเปิดใช้ไมโครโฟน และกล้องหากเลือกใช้ ก็ต่อเมื่อได้รับสิทธิ์ที่เกี่ยวข้องแล้ว
เลือกเส้นทางตรงหรือผ่านรีเลย์
ICE จะตัดสินว่าสามารถเชื่อมต่อโดยตรงได้หรือจำเป็นต้องใช้รีเลย์แบบ TURN
สื่อและข้อมูลควบคุมส่งไปพร้อมกัน
เสียงและวิดีโอทำงานแบบเรียลไทม์ ขณะที่ข้อความควบคุมแยกต่างหากส่งผ่านช่องข้อมูลได้
ทำไม WebRTC จึงเหมาะกับเบบี้มอนิเตอร์
เบบี้มอนิเตอร์ไม่จำเป็นต้องมีคลังข้อความหรือระบบอัปโหลดที่ล่าช้า แต่ต้องการเสียงที่หน่วงต่ำ สถานะแบบเรียลไทม์ที่ชัดเจน และการทำงานที่เหมาะสมเมื่อสภาพเครือข่ายเปลี่ยนไป นี่คือจุดที่ WebRTC ทำได้ดี: สื่อสด การเชื่อมต่อระหว่างอุปกรณ์ และตัวเลือกในการเพิ่มช่องควบคุมโดยเฉพาะ
ในมุมของพ่อแม่ นั่นหมายความว่าผลิตภัณฑ์ที่ใช้ WebRTC มักพยายามแก้ปัญหาการสื่อสารสดโดยตรง แทนการทำให้ดูเหมือนใช้งานสดด้วยวิธีที่ช้ากว่าหรือไม่เหมาะกับงานนี้เท่าไร ซึ่งเป็นเรื่องดี แต่เพียงเท่านี้ยังบอกไม่ได้ว่าผลิตภัณฑ์โปร่งใสแค่ไหน จัดการสิทธิ์ชัดเจนหรือไม่ หรือมีส่วนใดของโครงสร้างที่ยังซ่อนอยู่
ทำไมยังมีเซิร์ฟเวอร์ แม้จะเรียกว่า peer-to-peer
ตรงนี้เป็นจุดที่พ่อแม่หลายคนหยุดคิด และก็สมเหตุสมผลแล้ว Peer-to-peer ไม่ได้แปลว่าไม่มีเซิร์ฟเวอร์เข้ามาเกี่ยวข้องเลย อุปกรณ์ต้องหาเจอกัน แลกเปลี่ยนข้อมูลการเชื่อมต่อ และบางครั้งต้องใช้รีเลย์ในเครือข่ายที่มีข้อจำกัด เซิร์ฟเวอร์สำหรับส่งสัญญาณและเซิร์ฟเวอร์ TURN เป็นเรื่องปกติ สิ่งสำคัญคือใช้ทำอะไร และแอปอธิบายเรื่องนี้ชัดเจนแค่ไหน
แอปเบบี้มอนิเตอร์สามารถใช้เซิร์ฟเวอร์และยังคำนึงถึงความเป็นส่วนตัวได้ หากบทบาทของเซิร์ฟเวอร์ถูกจำกัดอย่างชัดเจนและอธิบายไว้ดี ปัญหาจะเริ่มขึ้นเมื่อการทำงานทางเทคนิคกลายเป็นการจัดเก็บข้อมูลที่คลุมเครือ ตรรกะบัญชีผู้ใช้ที่อธิบายไม่ชัด หรือการเก็บข้อมูลไว้โดยที่มองไม่เห็น
| องค์ประกอบของ WebRTC | เหตุใดจึงสำคัญสำหรับเบบี้มอนิเตอร์ |
|---|---|
| getUserMedia | ควบคุมการเข้าถึงไมโครโฟนและกล้อง จึงทำให้สิทธิ์การเข้าถึงเป็นประเด็นสำคัญอันดับต้น ๆ |
| RTCPeerConnection | รองรับเซสชันสื่อแบบเรียลไทม์ระหว่างอุปกรณ์สองเครื่อง |
| ICE / TURN | ช่วยให้เซสชันดำเนินต่อได้เมื่อเราเตอร์และ NAT ทำให้การสื่อสารโดยตรงทำได้ยาก |
| DataChannel | ช่วยให้ใช้ฟังก์ชันควบคุมเพิ่มเติมควบคู่กับสตรีมสื่อหลักได้ |
สิ่งที่ WebRTC ไม่ได้แก้ให้โดยอัตโนมัติ
WebRTC ไม่ได้สร้างการจับคู่อุปกรณ์ที่ปลอดภัยให้เอง และไม่ได้กำหนดว่าผลิตภัณฑ์จัดการตัวตนอย่างไร ข้อมูลการส่งสัญญาณจะเก็บไว้นานแค่ไหน หรือหน้าจอแสดงให้เห็นเมื่อการเชื่อมต่อหลุดหรือไม่ ดังนั้นผลิตภัณฑ์อาจใช้ WebRTC จริง แต่ยังทำได้ไม่ดีหรือไม่โปร่งใสในเรื่องที่สำคัญที่สุดสำหรับพ่อแม่
ผลในทางปฏิบัติง่ายมาก: “ใช้ WebRTC” เป็นเบาะแสที่มีประโยชน์ แต่ไม่ใช่จุดจบของการพิจารณา หลังจากนั้นจึงเป็นงานสำคัญจริง ๆ — การจับคู่ ความเป็นส่วนตัว สิทธิ์การเข้าถึง การทำงานของเครือข่าย และความโปร่งใสของผลิตภัณฑ์
คำถามเกี่ยวกับ WebRTC ที่พ่อแม่ควรถามจริง ๆ
ให้ถามต่อว่าจัดการการส่งสัญญาณ การจับคู่ และการมองเห็นสถานะการเชื่อมต่ออย่างไร
ให้ถามว่ายังมีเซิร์ฟเวอร์ใดบ้าง และบทบาทของเซิร์ฟเวอร์ถูกจำกัดและอธิบายเข้าใจง่ายหรือไม่
ให้ดูเรื่องสิทธิ์การเข้าถึง พฤติกรรมของรีเลย์ และการสื่อสารเรื่องความเป็นส่วนตัวอย่างละเอียด แทนที่จะคิดว่าชื่อเทคโนโลยีเพียงอย่างเดียวเพียงพอ
เช็กความสมเหตุสมผลทางเทคนิค
- อธิบายชัดเจนหรือไม่ว่าทำไมจึงต้องใช้สิทธิ์ไมโครโฟน กล้อง และเครือข่ายภายในเครื่อง
- ผลิตภัณฑ์อธิบายหรือไม่ว่าอุปกรณ์พบกันและเริ่มเซสชันได้อย่างไร
- อธิบายพฤติกรรมของรีเลย์ให้เข้าใจได้ แทนที่จะทำให้ดูเหมือนเรื่องลึกลับหรือไม่
- พ่อแม่ดูสถานะการเชื่อมต่อด้วยคำธรรมดาที่เข้าใจง่ายได้หรือไม่
- คำอธิบายโครงสร้างไปไกลกว่าแค่บอกว่า “เราใช้ WebRTC” หรือไม่
คำถามที่พบบ่อย
WebRTC ในเบบี้มอนิเตอร์คืออะไร
WebRTC คือเทคโนโลยีสำหรับการเชื่อมต่อแบบเรียลไทม์ที่เข้ารหัสระหว่างอุปกรณ์ โดยส่งเสียงและวิดีโอได้ และอาจเชื่อมต่อโดยตรงหรือผ่านเซิร์ฟเวอร์รีเลย์ ขึ้นอยู่กับเครือข่าย
เซิร์ฟเวอร์ TURN มองเห็นวิดีโอจากเบบี้มอนิเตอร์ได้หรือไม่
เซิร์ฟเวอร์ TURN จะส่งต่อแพ็กเก็ตเมื่อไม่สามารถเชื่อมต่อโดยตรงได้ สื่อยังคงได้รับการปกป้องด้วยการเข้ารหัสการรับส่งข้อมูลของ WebRTC และไม่ได้ถูกจัดเก็บไว้ที่เซิร์ฟเวอร์นั้นเป็นไฟล์บันทึก
ทำไม WebRTC ยังต้องใช้การส่งสัญญาณ
อุปกรณ์ต้องแลกเปลี่ยนรายละเอียดการเชื่อมต่อกันก่อน จึงจะเริ่มช่องสื่อได้ การส่งสัญญาณนี้ก็ควรได้รับการปกป้อง เก็บข้อมูลเท่าที่จำเป็น และลบออกหลังตั้งค่าเสร็จ
แหล่งข้อมูลและอ่านเพิ่มเติม
- เริ่มต้นใช้งาน WebRTC · WebRTC
- WebRTC API · เอกสารเว็บ MDN
- MediaDevices: getUserMedia() · เอกสารเว็บ MDN
- การขอสิทธิ์สำหรับแอป · นักพัฒนา Android
- การขอเข้าถึงทรัพยากรที่ได้รับการปกป้อง · เอกสารสำหรับนักพัฒนา Apple
- ยืนยันตัวตนกับ Firebase แบบไม่ระบุตัวตน · เอกสาร Firebase
- NSLocalNetworkUsageDescription · เอกสารสำหรับนักพัฒนา Apple
- ความปลอดภัยและโครงสร้างของ Babyphone Timmy · Babyphone Timmy