غالبًا ما يتم التعامل مع WebRTC كتقنية لمكالمات الفيديو مع بعض واجهات البرمجة المضافة.
هذا يغفل واحدة من أكثر قدراتها إثارة: RTCDataChannel.
تتيح قنوات البيانات للمتصفحات تبادل بيانات التطبيقات العشوائية عبر نفس مجموعة النظراء التي تستخدمها WebRTC للوسائط. هذا يفتح الباب لـ:
- أدوات التعاون
- الألعاب المتعددة عبر المتصفح
- نقل الملفات بمساعدة الأقران
- المزامنة المحلية ذات زمن الوصول المنخفض
ما الذي يشتريه لك الاتصال نظير إلى نظير
الجاذبية الرئيسية ليست إيديولوجية. إنها معمارية.
إذا كان بإمكان متصفحين تبادل البيانات مباشرة، فإنك تقلل من كمية المرور التي يجب أن تعبر البنية التحتية الخلفية الخاصة بك. هذا يمكن أن يقلل من:
- عرض النطاق الترددي للخادم
- تكاليف الترحيل
- الاختناقات المركزية
لكن هذا يحدث فقط عندما يكون المسار المباشر ممكنًا.
الأجزاء التي يتجاهلها الناس
لا تزال تحتاج عملية نشر WebRTC الحقيقية إلى:
- الإشارات
- تبادل مرشحي ICE
- STUN لاكتشاف الشبكة
- TURN لإعادة الترحيل عندما تفشل الاتصال المباشر
هذا يعني أن نظام WebRTC ليس "بدون خادم". إنه "ليس دائمًا يتم ترحيله عبر خادم تطبيقك".
TURN مهم بشكل خاص لأن العديد من المستخدمين الحقيقيين يجلسون وراء NAT أو ظروف جدار ناري تمنع الاتصال النظير إلى النظير النظيف.
شكل بسيط
عادةً ما يبدو إعداد جانب المتصفح كما يلي:
const pc = new RTCPeerConnection({
iceServers: [{ urls: "stun:stun.l.google.com:19302" }],
});
const channel = pc.createDataChannel("sync");
channel.onmessage = (event) => {
console.log("received", event.data);
};
ثم الباقي هو الإشارات: العروض، الإجابات، ومرشحي ICE.
هذا المسار الإشاري مرتبط بالتطبيق. WebRTC لا تعطيك ذلك.
حيث تناسب قنوات البيانات جيدًا
إنها مناسبة عندما:
- يكون زمن الوصول مهمًا
- يتبادل الأقران الحالة العابر
- لا يزال المنتج يعمل إذا كانت بعض الجلسات تمر عبر TURN
وهي غير مناسبة عندما:
- يجب أن يتم تدقيق كل نقل مركزيًا
- تهم التخزين غير المتصل وإمكانية الاستئناف أكثر من النقل المباشر
- لا يمكن أن تتحمل نموذج العمل بنية الترجيع عمومًا
بالنسبة لتسليم الملفات الكبيرة، يبدو أن الاتصال النظير إلى النظير جذاب، لكن إمكانية الاستئناف، والاستمرارية، والتوقعات عبر الأجهزة غالبًا ما تدفع الفرق للعودة إلى التخزين الكائن.
لذا فإن الإجابة الصادقة هي: قنوات بيانات WebRTC قوية، لكنها ليست بديلاً شاملاً للنقل من خلال الخادم.
مزيد من القراءة