ما هو Socket.IO؟

Socket.IO هي مكتبة JavaScript تمكّن الاتصال ثنائي الاتجاه في الوقت الفعلي بين عملاء الويب والخوادم. بينما تستخدم WebSocket كوسيط نقل أساسي، فإنها تعود تلقائياً إلى HTTP long-polling عندما لا يكون WebSocket متاحاً، مما يجعل الاتصالات أكثر موثوقية عبر بيئات الشبكة والوكلاء المختلفة. يضيف Socket.IO طبقة بروتوكول خاصة به فوق وسيط النقل الخام — بما في ذلك مصافحة مخصصة، نبضات القلب، إعادة الاتصال التلقائي، ونظام الأحداث المسماة — لذلك فهو غير قابل للتبديل مع خادم WebSocket عادي.

من أهم ميزات Socket.IO نموذج الأحداث الخاص به: بدلاً من إرسال رسائل خام، يصدر العملاء والخوادم ويستمعون إلى أحداث مسماة (مثل chat message، user joined)، مما يجعل منطق التطبيق أنظف وأسهل في التنظيم.

وصف الأداة

توفر هذه الأداة عميل Socket.IO تفاعلي يعمل بالكامل في المتصفح. اتصل بأي خادم Socket.IO، واختر حدثاً مسماى، وأنشئ رسائل نصية أو JSON، وأرسلها، وشاهد الأحداث الواردة واستجابات الخادم تظهر في سجل مختوم بالوقت. كما يعرض طبقة النقل النشطة (WebSocket أو polling) حتى تتمكن من التحقق من حدوث الترقية المتوقعة.

الميزات

  • دعم الأحداث المسماة — حدد أي اسم حدث قبل الإرسال بحيث تصل الرسائل تحت المستمع الصحيح على الخادم.
  • رؤية وسيط النقل — يعرض ما إذا كان الاتصال يستخدم وسيط WebSocket أو HTTP polling، ويتحدث تلقائياً بعد اكتمال مصافحة ترقية Socket.IO.
  • أوضاع النص و JSON — أنشئ الحمولات في نص عادي أو قم بالتبديل إلى وضع JSON مع تمييز الصيغة والتحقق قبل الإرسال.

شرح الخيارات

عنوان URL للخادم — عنوان HTTP(S) الكامل لخادم Socket.IO (مثل https://example.com/socketio). غالباً ما تستمع خوادم Socket.IO على مسار مثل /socket.io/؛ يتعامل العميل مع مسار المصافحة تلقائياً.

اسم الحدث — اسم حدث Socket.IO المراد إصداره عند إرسال رسالة. القيمة الافتراضية هي message. غيّر هذا لمطابقة الحدث الذي يستمع إليه الخادم (مثل chat، ping، data).

نوع البيانات — قم بالتبديل بين نص و JSON. في وضع JSON يتم التحقق من الحمولة وإرسالها كائن محلل؛ في وضع النص يتم إرسالها كسلسلة نصية عادية.

التمرير التلقائي — عند التفعيل، يتمرر سجل الرسائل تلقائياً إلى أحدث إدخال عند وصول رسائل جديدة.

كيف يعمل

يتصل العميل بالخادم المستهدف باستخدام Socket.IO JavaScript SDK الرسمي. بعد مصافحة HTTP الأولية، يحاول Socket.IO ترقية وسيط النقل من HTTP polling إلى WebSocket. تقرير الأداة عن وسيط النقل النشط وتحدّث التسمية كلما حدثت ترقية. يتم التقاط جميع الأحداث المستقبلة من الخادم — بغض النظر عن اسم الحدث — وعرضها في السجل مع طابع زمني.

نصائح

  • إذا نجح الاتصال لكن لم تظهر رسائل، تأكد من أن الخادم يصدر أحداثاً مرة أخرى إلى العميل المتصل، وليس فقط إلى عملاء آخرين.
  • استخدم حقل اسم الحدث لاختبار معالجات الخادم بشكل فردي دون كتابة أي كود.
  • غالباً ما يشير وسيط "polling" الذي لا يتم ترقيته أبداً إلى "websocket" إلى وكيل عكسي لا يدعم ترقيات WebSocket (مثل موازن تحميل بدون جلسات لزجة).