قد يبدو الاتصال اللحظي مستقرًا على جهاز المطور، لكنه ينقطع عند انتقال الهاتف بين الشبكات أو دخول الحاسوب في وضع السكون. إعادة فتح WebSocket وحدها لا تعني أن العميل استعاد الرسائل التي فاتته، كما أن إعادة الإرسال العشوائي قد تعرض الإشعار مرتين. يحتاج التطبيق إلى بروتوكول استئناف واضح فوق قناة الاتصال.
ميّز الاتصال عن حالة الاشتراك
تعامل مع فتح القناة وتوثيق الجلسة والاشتراك في الموضوعات كخطوات منفصلة. بعد إعادة الاتصال، لا تفترض أن الخادم احتفظ بالاشتراكات القديمة؛ أعد بناءها وفق الحالة المصرح بها للمستخدم. إذا تغيرت صلاحيات الحساب أثناء الانقطاع، يجب ألا تسمح عملية الاستئناف باستعادة موضوع لم يعد متاحًا له.
امنح الرسائل معرفات أو أرقام تسلسل
أضف لكل حدث معرفًا ثابتًا ورقمًا متزايدًا ضمن نطاق واضح، مثل محادثة أو غرفة. يحتفظ العميل بآخر حدث طبقه بنجاح ويرسله عند الاستئناف. يستطيع الخادم عندئذ إرسال الفجوة من سجل مؤقت أو مطالبة العميل بإعادة مزامنة الحالة كاملة إذا خرجت الأحداث من نافذة الاحتفاظ. لا تجعل وقت وصول الرسالة على جهاز المستخدم معيارًا للترتيب.
صمم إعادة الاتصال دون موجات طلبات
استخدم تراجعًا تدريجيًا مع تباين عشوائي بين المحاولات، وتوقف عن الإلحاح عندما يكون الجهاز غير متصل بالشبكة. لا ترسل مئات الطلبات المتزامنة من جميع التبويبات بعد عودة الإنترنت. يمكن لقناة مشتركة أو منطق تنسيق بين التبويبات أن يقلل الضغط، مع مراعاة عزل الجلسات والصلاحيات.
امنع تكرار الأثر عند إعادة التسليم
قد يرسل الخادم حدثًا قبل أن يستلم تأكيد العميل، ثم يعيده بعد الاتصال الجديد. يجب أن يكون تطبيق الحدث قابلًا للتكرار بأمان أو أن يحتفظ العميل بمجموعة محدودة من المعرفات التي عالجها. لا تخلط بين وصول الرسالة وعرضها للمستخدم؛ فإشعار الدفع قد يحتاج حالة قراءة مستقلة عن تسليم الحدث.
اختبر الانقطاع في لحظات صعبة
اقطع الشبكة بعد إرسال رسالة وقبل تأكيدها، ثم أعد الاتصال، وراقب الترتيب والازدواجية. جرّب وضع السكون وتغيير الشبكة وانتهاء الرمز أثناء الانقطاع وفتح عدة تبويبات. قس الوقت حتى تعود الواجهة متزامنة، لا الوقت حتى تظهر علامة اتصال خضراء فقط.
مثال غرفة دعم مباشرة
إذا أرسل موظف ثلاث رسائل أثناء انقطاع عميل، فيجب أن يرى العميل الثلاث عند عودته مرة واحدة وبالترتيب الصحيح. إن لم يعد السجل المؤقت متاحًا، اجلب أحدث سجل للمحادثة من API عادي وقارنه بالمعرفات المحلية. بهذه الطريقة تصبح القناة اللحظية وسيلة نقل سريعة لا المصدر الوحيد للحقيقة.
شارك في تقييم ونقاش المقال
رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.
النقاش
جارٍ تحميل التعليقات…