اكتشف معنا ما وراء تقنيات الاتصال Web Socket

  1. ما هو Web Socket لماذا نختاره؟
  2. الفرق بين الـ Socket و WebSocket و Socket.IO؟
  3. كيف يعمل Socket.IO؟
  4. إيجابيات وسلبيات Socket.IO
  5. الفرق بين Socket.IO و RESTful APIs؟
  6. أمثلة واقعية

الـ Socket هي واجهة برمجية تُستخدم لتبادل البيانات بين جهازين عبر الشبكة.
تمكِّن البرامج من الاتصال ببعضها البعض (محليًا أو عبر الإنترنت) باستخدام بروتوكولات مثل TCP أو UDP ويتم اختياره ل سببين رئيسين ألا وهما :

Real Time Communication

عندما يتم إنشاء اتصال WebSocket  لأول مرة كل من ال client  وال Server  يمكنهما ارسال واستقبال الرسائل Real time way In .

Bidirectional Communication

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

Socket IO               WebSocket   Socket               
هي مكتبة 3D Party مبنية على بروتوكول WebSocket، وتتوفر لها تطبيقات في معظم اللغات والأطر الشهيرة على جانب العميل والخادم. عادةً ما نستخدم Socket.IO بدلاً من WebSocket بسبب الميزات المضمنة والموثوقة التي تقدمها.هو عبارة عن بروتوكول وليس تطبيق بل هو بحاجة إلى مكتبة لتنفيذه والفرق الجوهري بين WebSocket و Socket  هو أن اتصال ال Socket يتم إغلاقه بمجرد انتقال البيانات .يشير عموماً إلى كل شبكة تطلب فتح اتصال Socket لأرسال واستقبال البيانات من وإلى الخادم  وهي على نوعين TCP Sockets و UDP Sockets

يطلب العميل Client  فتح اتصال مع الخادم Server   ويكون هذا الاتصال عبارة عن قناة channel  بين العميل والخادم حيث يتم التخاطب بينهما عن طريق  Events حيت تم إعطاء مثال تقريبي ك نهر بين الطرفين (Client & Server)  يوجد فيه قارب يحمل لنا ما يسمي ب Event  وهذا القارب ينتقل بينهما ذهاباَ وإياباً وهذا كان مما دعم لنا تصورنا عن فكرة ال Channel  وكيف يعمل هذا الاتصال .

  1. إعادة الاتصال التلقائي : ميزة في Socket.IO لإعادة الاتصال بين العميل والخادم تلقائيًا إذا انقطع. تساعد في تقليل فقدان البيانات وضمان استمرار الاتصال.
  2. الحدث المؤقت : يعني الأحداث المخزنة مؤقتًا عندما لا يكون هناك اتصال بين العميل والخادم. في Socket.IO، إذا كان العميل غير متصل عند إرسال حدث، يمكن تخزينه وإرساله تلقائيًا عند استعادة الاتصال. هذا يضمن عدم فقدان البيانات أو الرسائل المهمة.
  3. Acknowledgment: هو آلية تستخدم في Socket.IO للتأكد من أن حدثًا معينًا قد تم استلامه ومعالجته بنجاح من قبل الطرف الآخر (العميل أو الخادم). عندما يرسل أحد الأطراف حدثًا، يمكنه أيضًا تحديد دالة   callback function تُنفذ عندما يتلقى الطرف الآخر الحدث. هذا يتيح للطرف المرسل التأكد من أن الحدث قد تم استلامه والتعامل معه بشكل صحيح.
  4. Room-based Communication:هي خاصية في Socket.IO تسمح بتقسيم الاتصالات إلى “غرف”. يمكن للعميل الانضمام إلى غرفة معينة للتواصل مع مجموعة محددة من العملاء فقط، مما يفيد في تطبيقات مثل الدردشة حيث يمكن لمجموعة من المستخدمين التحدث معًا دون تداخل مع آخرين.
RestfulAPIsSocket IO
-تعتمد على طلبات HTTPمثل GET وPOST وPUT وDELETE  كل طلب يتطلب اتصالاً جديدًا، مما يعني أن كل تفاعل يتطلب عملية جديدة. هذا يجعلها أقل كفاءة في حالة التحديثات المتكررة.
-مناسب للتطبيقات التي تتطلب تفاعلات بسيطة وغير متكررة، مثل استرجاع البيانات من الخادم أو إرسال بيانات جديدة. يستخدم بشكل واسع في التطبيقات التي تعتمد على CRUD
– عادة ما تكون أبسط وأسهل في الفهم والتنفيذ، حيث تعتمد على مبادئ HTTP المعروفة. يمكن للمطورين استخدام أدوات مثل Postman لاختبار واجهات REST بسهولة.
-يوفر اتصالًا مستمرًا بين العميل والخادم، مما يسمح بتبادل البيانات في الوقت الفعلي دون الحاجة إلى إعادة تحميل الصفحة أو إرسال طلب جديد. هذا يعني أن البيانات يمكن أن تُرسل وتُستقبل بشكل مستمر في أي وقت.
– مثالي للتطبيقات التي تحتاج إلى تحديثات في الوقت الفعلي، مثل تطبيقات الدردشة، الألعاب متعددة اللاعبين، أو أي تطبيق يحتاج إلى تبادل بيانات سريع ومستمر.
-قد يكون أكثر تعقيدًا في الإعداد والتطوير بسبب الحاجة إلى إدارة الاتصالات المستمرة. يجب على المطورين التعامل مع حالات الاتصال والانفصال وإعادة الاتصال.

هناك العديد من التطبيقات التي تسخدم socket IO   ومنها :

الختام

  1. https://github.com/ahmadshahal/Socket.io-Template-Flutter
  2. https://github.com/ahmadshahal/Socket.io-Template-Android

اكتشاف المزيد من Mobile Dev Meetup

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك رد