الاتصال في الزمن الحقيقي (Realtime)

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

تُعد ميزة Realtime خيارًا مثاليًا لبناء:

  • تطبيقات الدردشة.
  • الإشعارات الفورية.
  • تتبع حالة الطلبات.
  • لوحات التحكم الحية.
  • الأنظمة التعاونية.
  • التحديثات المباشرة للبيانات.

تتوفر خدمة Realtime ضمن خطط HosteDay المدفوعة ابتداءً من خطة Business وما فوق، حيث تتيح هذه الخطط إنشاء القنوات وإرسال الأحداث واستقبالها بشكل مباشر عبر WebSocket. أما الخطة المجانية فلا تتضمن دعم Realtime، لذلك يجب التأكد من اختيار خطة تدعم هذه الميزة قبل البدء ببناء التطبيقات التي تعتمد على الاتصال اللحظي.

يوضح الجدول التالي الخطط التي تدعم خدمة Realtime والموارد المتاحة لكل خطة.


المتطلبات

للاستفادة من ميزة الاتصال في الزمن الحقيقي، يجب أن يكون الخادم الخاص بك مرتبطًا بخطة تدعم Realtime.

إذا كانت الخطة الحالية لا تتضمن هذه الميزة فلن تتمكن من إنشاء أو استقبال الأحداث الفورية.


كيف يعمل Realtime في HosteDay؟

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

يتكون النظام من جزأين رئيسيين:

  1. الاتصال بقناة Realtime.
  2. إرسال الأحداث إلى القناة.

عند إرسال حدث جديد من الخادم يتم توزيعه مباشرة على جميع العملاء المتصلين بالقناة نفسها.


أنواع القنوات

في هذا الدليل سنستخدم:

Public Channels

وهي قنوات عامة لا تتطلب أي مصادقة أو تفويض إضافي.

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

تُستخدم القنوات العامة غالبًا في:

  • غرف الدردشة العامة.
  • الإعلانات العامة.
  • التحديثات المشتركة بين جميع المستخدمين.

مثال عملي

سنقوم ببناء نموذج مبسط لغرفة دردشة عامة.

اسم القناة:

chat.room.1

أي مستخدم يتصل بهذه القناة سيتمكن من استقبال الرسائل المرسلة إليها.


الاتصال بخادم WebSocket

عنوان الاتصال:

wss://ws2.hosteday.com/app/key-app

بعد إنشاء الاتصال يجب الاشتراك في القناة المطلوبة:

{
    "event": "pusher:subscribe",
    "data": {
        "channel": "chat.room.1"
    }
}

بعد نجاح الاشتراك يصبح التطبيق جاهزًا لاستقبال الأحداث الجديدة.


إرسال الأحداث

توفر HosteDay واجهة API مخصصة لإرسال الأحداث إلى القنوات.

عنوان الطلب:

https://my-server.hosteday.com/api/realtime/events

مثال على إرسال رسالة جديدة:

{
    "channel": "chat.room.1",
    "event": "message.sent",
    "type": "public",
    "payload": {
        "message": "كيف الحال"
    }
}

شرح الحقول

الحقل الوصف
channel اسم القناة المستهدفة
event اسم الحدث
type نوع القناة
payload البيانات المرسلة مع الحدث

في هذا المثال:

channel = chat.room.1

هو اسم غرفة الدردشة.

أما:

event = message.sent

فهو اسم الحدث الذي سيتم استقباله من قبل العملاء المتصلين.

بينما يحتوي:

payload

على البيانات الفعلية التي سيتم إرسالها مع الحدث.


ما الذي يحدث بعد إرسال الحدث؟

عند تنفيذ الطلب تقوم HosteDay تلقائيًا بما يلي:

  • إرسال الحدث إلى القناة المحددة.
  • توزيع البيانات على جميع المشتركين في القناة.
  • تمرير اسم الحدث إلى العميل.
  • تمرير البيانات الموجودة داخل payload.

وبذلك تصل الرسالة فورًا إلى جميع المستخدمين المتصلين بغرفة الدردشة.


الخطوة التالية

في الدروس القادمة سنتعرف على:

  • ربط تطبيق Flutter بخدمة Realtime.
  • استقبال الأحداث داخل التطبيق.
  • إنشاء خدمة Realtime قابلة لإعادة الاستخدام.
  • القنوات الخاصة (Private Channels).
  • قنوات الحضور (Presence Channels).
  • المصادقة على القنوات الخاصة.
  • أفضل الممارسات لإدارة الاتصالات والأحداث.