- Thư viện giúp hiện thực web app multiplayer được kết nối với nhau mà không cần máy chủ chỉ với vài dòng code
- Dựa trên WebRTC của trình duyệt, tận dụng mạng công khai làm kênh trao đổi tín hiệu (signaling) để tự động hóa việc ghép nối P2P và giao tiếp
- Chọn một trong BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase để phát hiện peer mà không cần máy chủ
- Dữ liệu ứng dụng sau signaling được truyền trực tiếp bằng P2P + mã hóa E2E mà không đi qua bên trung gian
- Cung cấp các trừu tượng hóa cấp cao như Rooms/broadcasting, tự động serialization, chunking/throttling cho dữ liệu lớn, sự kiện tiến trình, mã hóa dữ liệu phiên, metadata của stream
- Chạy không chỉ trên trình duyệt mà còn trong Node/Deno/Bun, đồng thời hỗ trợ các tính năng thực chiến như cấu hình máy chủ TURN, React hooks, thực thi phía máy chủ
- Cách tiếp cận tận dụng hạ tầng công khai theo kiểu không cần cấu hình khiến nó rất phù hợp cho nhiều thử nghiệm và hoạt động tạo prototype
8 bình luận
Máy chủ TURN có phải tổ tiên lo sẵn cho không?
'stun:stun.cloudflare.com:3478'có vẻ đang được hardcode trong mã nguồn.Không phải
stunmà làturn.stunchỉ ở mức đơn giản là cho biết bạn là ai theo tiêu chuẩnstun, nên cũng có kha khá server công khai,còn
turnthì phải relay lưu lượng nên (đắt) либо là trả tiền để dùng, либо là phải tự triển khai.Ví dụ) https://github.com/coturn/coturn
Là kiểu như vậy đó.
Dù cũng có nhiều trường hợp chỉ với
stunlà vẫn có thể giao tiếp được, nhưng để nói đơn giản là “được” thì.....kiểu là...... cũng chạy đấy..... nhưng mà ừm.. là cảm giác vậy.
Nếu là ghép nối p2p thì đâu cần TURN nhỉ?
Có lẽ còn tùy vào ý bạn nói về "ghép nối p2p" trong WebRTC là gì.
Nếu là trường hợp 1 thì đúng như bạn nói, không cần TURN.
Ngay cả ở trường hợp 2, nếu tình huống thuận lợi và việc giao tiếp UDP hai chiều đã thành công thì cũng không cần TURN.
Trong trường hợp 2, nếu việc giao tiếp gói tin qua UDP giữa hai bên thất bại thì cần TURN.
Các yếu tố gây thất bại là
thì phải dùng TURN.
(Tôi cũng mới biết là IPv4 only <-> IPv6 only không hoạt động, trong lúc kiểm tra lại trí nhớ.)
Vâng, ý tôi là mục số 2. Đã nói là “liên kết với nhau mà không cần máy chủ”, lại còn là “thư viện”, thì có phải bạn đang kỳ vọng quá nhiều rồi không...
Bạn đang muốn nói đến phần nào vậy?
-> Nếu là ý này thì có lẽ kiến thức của tôi đã cũ rồi. Nếu có phần nào tình hình đã thay đổi sau những gì tôi biết (và đã chia sẻ), mong bạn cho tôi biết nhé~!
-> Điều skageektp nói là đúng. Vì là thư viện nên cũng có thể bỏ qua ở mức đó. Là tôi đã quá nhạy cảm.
Ý tôi là
3. Nếu dùng cho ra hồn thì chỉ STUN là không đủ, vẫn cần TURN, nên cách nói đó hơi cường điệu quá~
đó mới là điều tôi muốn diễn đạt.
Về phần giải thích số 1 và 2
Xin đính chính lại như vậy. Trong bài gốc có thể gây hiểu nhầm.