تغيير اللغة:

تابعنا

مدونتنا

الرئيسية | مدونتنا
الواجهة الخلفية 3 دقيقة قراءة

بناء حل اجتماعات فيديو فورية مخصص من الصفر باستخدام Socket.io

Abdullah Khaled

Abdullah Khaled

Jun 18, 2026
0 تعليقات
بناء حل اجتماعات فيديو فورية مخصص من الصفر باستخدام Socket.io

في IT PLUS بنيت حلا مخصصا لاجتماعات الفيديو الفورية من الصفر ليحمل حصصا مباشرة مع دردشة وحضور ومشاركة شاشة. كانت الواجهة الخلفية باستخدام PHP مع Laravel، وطبقة الإشارات باستخدام Socket.io مع Node.js، وكان العميلان Angular للويب و Ionic للهاتف. تشرح هذه المقالة كيف تتكامل الأجزاء وما الذي علمتني إياه بيئة التشغيل.

أين يعيش كل جزء

توزيع المسؤولية الواضح يجعل النظام المباشر سهل الفهم. كل طبقة تملك مهمة واحدة وتثق في أن الطبقات الأخرى تؤدي مهامها.

  • Laravel تملك الحقيقة. الغرف والجداول والعضوية والأدوار تعيش في MySQL خلف Laravel. وحدها Laravel تستطيع إنشاء اجتماع أو إضافة عضو أو إغلاق غرفة.
  • Socket.io تملك اللحظة. الانضمام والمغادرة وحالة الكتم والأيدي المرفوعة وإشعارات الكتابة تنتقل كأحداث حية. خادم الإشارات لا يخزن حقيقة العمل، بل ينقل ما يحدث الآن.
  • Angular و Ionic يملكان عرض الغرفة. عميل الويب وعميل الهاتف يعرضان الأحداث نفسها، وينضمان بالرمز نفسه، ويتعافيان بالخطوات نفسها.

إشارات دون تخزين الحقيقة

الإشارات مرحل وليست مخزنا. يطلب العميل من Laravel رمزا قصير العمر للاجتماع، ثم يفتح اتصال Socket.io بذلك الرمز، وينضم إلى غرفة مسماة، ثم يتبادل عروض الجلسة ومرشحات الشبكة عبر الغرفة. يتحقق الخادم من الرمز، ويضع الاتصال في الغرفة، ويوجه كل رسالة إلى الطرف الصحيح.

  • التحقق قبل الانضمام. كل اتصال يثبت اجتماعه ومستخدمه قبل دخول الغرفة، فلا يستطيع أي ضيف سرد الغرف الأخرى أو دخولها.
  • غرفة واحدة لكل اجتماع. اسم الغرفة يقابل سجلا واحدا للاجتماع في Laravel، ما يجعل السجلات والإشراف متوافقين مع قاعدة البيانات.
  • أحداث صغيرة. الحضور والكتم ورفع اليد وتغيير الشريحة وإشعارات الدردشة تبقى صغيرة ومتكررة، بينما تسير الوسائط في مسارها الخاص.
  • المغادرة حدث. الإغلاق أو التحديث أو ضياع الإشارة تنتهي كلها بالتنظيف نفسه وتحديث قائمة الحاضرين وإشعار المضيف.

الغرف والصلاحيات في Laravel

تبقى Laravel المرجع حتى أثناء انعقاد الاجتماع. يسأل Socket.io منظومة Laravel من يدخل ومن يتحدث ومتى تنتهي الغرفة.

  • رمز لكل مقعد. تصدر Laravel رمزا يربط المستخدم والاجتماع والدور معا لعمر قصير.
  • أدوار بسيطة. مضيف ومقدم وعارض تغطي معظم الحصص دون قواعد متشابكة.
  • الإغلاق يعني الإغلاق. عندما تعتبر Laravel الاجتماع منتهيا، تطلب طبقة الإشارات من كل اتصال المغادرة وتمنع العودة.

Angular للويب و Ionic للهاتف

يتحدث العميلان بأسماء الأحداث نفسها ويعالجان الحالات نفسها، ما يجعل الإصلاحات متقاربة في روحها رغم وجود قاعدتي كود.

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

ما الذي علمتني إياه بيئة التشغيل

غرف البث تفشل بطرق عادية. والحلول عادات وليست بطولات.

  • سجل الغرفة لا الخادم فقط. معرف الاجتماع ومعرف المستخدم واسم الحدث في كل سطر من سجلات الإشارات يحول بلاغا غامضا إلى قصة قابلة للتتبع.
  • احم مسار المضيف. كتم الجميع وإنزال الأيدي وقفل الغرفة وإنهاء الاجتماع يجب أن تعمل حتى عندما تضج الغرفة.
  • اختبر بأجهزة حقيقية. هاتف قديم على بيانات الهاتف يكشف عيوبا لا يظهرها حاسوب سريع أبدا.
  • افصل الوسائط عن الإشارات في ذهنك. عندما يتأخر الصوت افحص الوسائط أولا. وعندما تتأخر قائمة الحاضرين أو الدردشة افحص الإشارات أولا.

بهذا البناء يبقى النظام قابلا للشرح. تحمل Laravel السجلات، وتحمل Socket.io اللحظة الحية، ويعرضها Angular و Ionic، ويمكن إصلاح كل طبقة دون إعادة بناء الأخرى.

موسوم بـ:

تعليقات (0)

تسجيل الدخول للتعليق

لنشر تعليق، يجب تسجيل الدخول. يرجى تسجيل الدخول. تسجيل الدخول