Bedrud التوثيق

يستخدم Bedrud LiveKit للتعامل مع اتصالات الفيديو والصوت في الوقت الفعلي. يوفر LiveKit خادم وسائط SFU (وحدة التوجيه الانتقائي)، ويتعامل Bedrud مع المصادقة وإدارة الغرف وضوابط المشرفين.

مدمج مقابل خارجي

يدعم Bedrud وضعين لنشر LiveKit:

١. الوضع المدمج (الافتراضي): تبدأ الخلفية وتدير عملية خادم LiveKit داخليًا. لا حاجة لبنية تحتية إضافية - تتعامل الخلفية مع دورة حياة عملية LiveKit. ٢. الوضع الخارجي: يتصل Bedrud بخادم LiveKit منفصل أو مجموعة. هذا مفيد للتوسع الأفقي أو عند استخدام مثيل LiveKit Cloud مُدار.

تهيئة الوضع الخارجي

لاستخدام خادم LiveKit خارجي، اضبط المفاتيح التالية في config.yaml:

livekit:
  host: "livekit.example.com:7880"
  api_key: "your-api-key"
  api_secret: "your-api-secret"
  embedded: false

عندما يكون embedded بقيمة false، يتخطى Bedrud بدء تشغيل ملف LiveKit الثنائي المدمج. يجب أن تتطابق مفتاح API والسر مع بيانات اعتماد الخادم الخارجي.

لإعداد وتحويم مجموعة LiveKit، راجع توثيق LiveKit.

كيف يعمل

١. إنشاء الغرفة

عندما ينشئ مستخدم غرفة في Bedrud، لا ينشئ الخادم غرفة LiveKit فورًا. تُنشأ غرف LiveKit عند الطلب عندما ينضم أول مشارك.

٢. رموز الانضمام

عندما ينضم مستخدم إلى اجتماع:

١. يُرسل الواجهة الأمامية طلبًا إلى /api/room/join. ٢. تتحقق الخلفية من أن المستخدم لديه إذن للانضمام إلى تلك الغرفة. ٣. تستخدم الخلفية مفتاح API وسرها لتوليد JWT مُوقَّع (رمز الانضمام). ٤. يحتوي الرمز على:

  • اسم الغرفة.
  • هوية المستخدم (اسم العرض).
  • الصلاحيات - على سبيل المثال، ما إذا كان يمكن للمستخدم نشر الصوت أو مشاركة شاشته. ٥. تتلقى الواجهة الأمامية هذا الرمز وتتصل مباشرة بمنفذ وسائط LiveKit (الافتراضي 7880).

٣. ضوابط الغرفة (المشرف)

تستخدم الخلفية LiveKit Go SDK لتنفيذ إجراءات إدارية:

  • طرد: يفصل مشاركًا.
  • كتم: يكتم صوت ميكروفون مشارك قسرًا.
  • الصلاحيات: يغيّر ما يمكن لمشارك فعله في الوقت الفعلي.

بنية الشبكة

  • منفذ API (8090/443): يتعامل مع طلبات HTTP وإشارات WebSocket لإعداد المكالمات.
  • منفذ الوسائط (7880): يتعامل مع بيانات الفيديو والصوت باستخدام بروتوكولات WebRTC. احتياطي ICE/TCP يستخدم المنفذ 7881 عندما يكون UDP محظورًا.
  • منفذ TURN (3478 UDP / 5349 TLS): يرحل الوسائط للعملاء خلف NATs أو جدران حماية مقيدة. راجع دليل خادم TURN.

لمتطلبات جدار الحماية والمنافذ، راجع اتصال WebRTC.

معالجة الأخطاء

LiveKit غير قابل للوصول

إذا كان خادم LiveKit غير قابل للوصول، قد ينجح توليد الرموز (تُنشأ الرموز محليًا باستخدام مفتاح API والسر). ومع ذلك، سيفشل العميل في الاتصال بخادم الوسائط. الأعراض:

  • يتلقى العميل رمز انضمام صالح لكن اتصال WebRTC ينتهي وقته.
  • يُصدر LiveKit SDK حدث Reconnecting أو خطأ اتصال.

تحقق: تأكد من أن خادم LiveKit يعمل (systemctl status livekit) وأن المضيف/المنفذ في config.yaml صحيح.

تعطل عملية LiveKit المدمجة

في الوضع المدمج، إذا تعطلت عملية LiveKit الفرعية:

  • يستمر خادم API الخاص بـ Bedrud في العمل (يمكن عرض الغرف، يمكن للمستخدمين تسجيل الدخول).
  • تفقد الاجتماعات النشطة اتصال الوسائط.
  • طلبات الانضمام الجديدة ستنشئ رموزًا، لكن العملاء لا يمكنهم الاتصال.

تحقق: افحص السجلات في /var/log/bedrud/bedrud.log أو شغّل journalctl -u livekit -f لتفاصيل التعطل.

انتهاء صلاحية الرمز

رموز انضمام LiveKit لها نافذة صلاحية قصيرة. إذا انتظر العميل طويلًا بين تلقي الرمز والاتصال، ستنتهي صلاحية الرمز. يجب على العميل طلب رمز جديد عبر /api/room/join.

انظر أيضًا