- ไลบรารีที่ช่วยให้สร้าง เว็บแอปมัลติเพลเยอร์ ที่ เชื่อมต่อกันได้โดยไม่ต้องมีเซิร์ฟเวอร์ ด้วยโค้ดเพียงไม่กี่บรรทัด
- ทำงานบนพื้นฐานของ WebRTC ในเบราว์เซอร์ และใช้เครือข่ายสาธารณะเป็น ช่องทางแลกเปลี่ยนสัญญาณ (signaling) เพื่อ ทำให้การจับคู่และการสื่อสารแบบ P2P เป็นอัตโนมัติ
- เลือกใช้ BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase อย่างใดอย่างหนึ่งเพื่อ ค้นหาเพียร์ได้โดยไม่ต้องมีเซิร์ฟเวอร์
- หลังจาก signaling แล้ว ข้อมูลของแอป จะถูกส่งต่อแบบ P2P พร้อม การเข้ารหัส E2E โดยไม่ผ่านตัวกลาง
- มี abstraction ระดับสูง สำหรับ Rooms/การบรอดแคสต์, การ serialize อัตโนมัติ, การแบ่งชิ้น/การ throttle สำหรับข้อมูลขนาดใหญ่, อีเวนต์ความคืบหน้า, การเข้ารหัสข้อมูลเซสชัน, เมทาดาทาของสตรีม เป็นต้น
- ไม่ได้ทำงานแค่ในเบราว์เซอร์ แต่ยังรองรับ Node/Deno/Bun และมีความสามารถที่ใช้ได้จริง เช่น การตั้งค่า TURN server, React hooks, การรันฝั่งเซิร์ฟเวอร์
- แนวทางที่ใช้โครงสร้างพื้นฐานสาธารณะได้แบบ ไม่ต้องตั้งค่า ทำให้เหมาะกับการทดลองและการทำต้นแบบหลากหลายรูปแบบ
8 ความคิดเห็น
แล้วเซิร์ฟเวอร์ TURN นี่บรรพบุรุษจะเป็นคนจัดหาให้เหรอ?
มี
'stun:stun.cloudflare.com:3478'ถูกฝังไว้ในซอร์สเลยนะไม่ใช่
stunแต่เป็นturnครับstunแค่บอกประมาณว่าเกณฑ์ของstunแล้วคุณคือใคร เลยพอจะมีเซิร์ฟเวอร์สาธารณะให้ใช้บ้างแต่
turnต้องคอยรีเลย์ทราฟฟิกให้ (ซึ่งแพง) เลยต้องไม่จ่ายเงินใช้ หรือไม่ก็ต้องติดตั้งเองครับตัวอย่าง) https://github.com/coturn/coturn
ประมาณเจ้าตัวนี้แหละครับ
แม้จะมีหลายกรณีที่สื่อสารกันได้ด้วย
stunอย่างเดียว แต่ถ้าจะพูดแบบง่าย ๆ ว่า "ได้" เลยก็คงจะ.....มัน......ก็ได้แหละ..... แต่ก็ อืม.. ประมาณนั้นครับ
ถ้าเป็นการจับคู่แบบ p2p ก็ไม่จำเป็นต้องใช้ TURN ไม่ใช่เหรอ
คงขึ้นอยู่กับเจตนาที่คุณพูดถึงว่าเป็น "การจับคู่ p2p" ใน WebRTC แบบไหน
ถ้าเป็นข้อ 1 ก็ไม่จำเป็นต้องใช้ TURN อย่างที่คุณบอกครับ
แม้ในข้อ 2 ถ้าสถานการณ์เอื้อและทั้งสองฝ่ายสื่อสารกันผ่าน UDP สำเร็จ ก็ไม่จำเป็นต้องใช้ TURN
ในข้อ 2 ถ้าทั้งสองฝ่ายส่งแพ็กเก็ตผ่าน UDP หากันไม่สำเร็จ จึงจำเป็นต้องใช้ TURN
ปัจจัยที่ทำให้ล้มเหลว เช่น
กรณีแบบนี้ต้องใช้ TURN ครับ
(เพิ่งรู้ตอนทบทวนความจำเหมือนกันว่า IPv4 only <-> IPv6 only ใช้งานกันไม่ได้)
ใช่ ก็คือข้อ 2 นั่นแหละ บอกว่าเป็น 'การเชื่อมต่อกันได้โดยไม่ต้องมีเซิร์ฟเวอร์', 'ไลบรารี' แต่คุณคาดหวังกันมากเกินไปหรือเปล่า...
หมายถึงส่วนไหนที่คุณต้องการจะสื่อครับ?
-> ถ้าเป็นกรณีนี้ สงสัยว่าความรู้ที่ผมมีคงเก่าแล้ว ถ้ามีส่วนที่สถานการณ์เปลี่ยนไปหลังจากข้อมูลที่ผมรู้ (และแชร์ไว้) รบกวนช่วยบอกให้หน่อยนะครับ~!
-> ที่คุณ skageektp พูดมาถูกต้องครับ เพราะเป็นไลบรารี ก็อาจอนุโลมได้ประมาณนั้น ผมเองแค่ไวเกินไปครับ
ส่วนผม
3. ถ้าจะใช้งานให้ถูกต้อง แค่ STUN อย่างเดียวไม่พอและต้องมี TURN แต่พูดเกินจริงไปมาก~
กำลังจะสื่อแบบนี้อยู่ครับ.
สำหรับคำอธิบายข้อ 1 และ 2
ขอแก้ไขเป็นดังนี้ ในต้นฉบับเดิมมีส่วนที่อาจทำให้เข้าใจผิดได้ครับ