“هل انتهت المعاملة بالفعل، لكن الصفحة لم تتغير بعد؟”——إذا قيلت هذه العبارة في لوحة محفظة أو في الخلفية الخاصة بسوق تداول، فعادةً ليست مشكلة المستخدم، بل أن النظام التقط الحدث بشكل خاطئ أو فاتته الإشارة.
واجهة HTTP الخاصة بـ @Dusk تضع اشتراك أحداث العقد ضمن المسار /on/contracts:<contract_id>/<method>. يتم استخدام GET لإضافة الاشتراك وDELETE لإلغائه، ولا بد من الاعتماد على Rusk-Session-Id للحفاظ على الجلسة. يبدو الأمر كأنه تفاصيل واجهة برمجية، لكن في رأيي فهو في الحقيقة يذكّر بشيء واحد: الإشعارات الفورية نفسها ليست دفتر الأستاذ.
عندما يكون الاتصال طبيعيًا، تقوم المحفظة بتحديث الرصيد عبر الأحداث، ويقوم سوق التداول بتقديم عملية التجميع أو حالة الطلب عبر الأحداث. لكن بعد انقطاع الاتصال، لا تستطيع الجلسة إلا مساعدتك في استعادة علاقة الاشتراك، ولا يمكنها إثبات أنه لم يتم تفويت أي شيء في الوسط. الجزء الذي تم تفويته—لا يزال يجب الرجوع إليه من جديد في حالة البلوكات والمعاملات وحالة العقد ثم معالجته.
أتخيل سيناريو محددًا. تم بالفعل نشر تحويل DUSK الخاص بالمستخدم على السلسلة. وانقطع اتصال الاستماع لدى سوق التداول تمامًا لبضع دقائق. لا مشكلة في السجل الموجود على السلسلة، لكن الرصيد لم يُحدَّث. عند قيام المستخدم بإرسال مرة أخرى، قد تظهر في الخلفية سجلات انتظار معالجة مزدوجة. ما يراه فريق خدمة العملاء هو “لم يصل المبلغ”، وما يواجهه فريق العمليات هو تعويض عبر الأحداث مع مطابقة يدوية.
هذا يجعل لدي متطلبًا إضافيًا لواجهة أحداث @Dusk . كتابة نقطة إدخال الاشتراك في الوثائق هي مجرد الخطوة الأولى، أما الذي يحدد جودة التكامل حقًا فهو ما إذا كانت المحفظة وسوق التداول يمكنهما—بعد إعادة الاتصال—استعادة السياق عبر session، ثم سد الفجوة باستخدام حالة السلسلة على نحو موثوق. $DUSK يجب أن يحمل تدفق الأصول الحقيقي، والإشعارات الفورية وظيفتها التنبيه فقط؛ وفي النهاية يجب أن يكون هناك مسار آخر للتحقق والمراجعة. #dusk
واجهة HTTP الخاصة بـ @Dusk تضع اشتراك أحداث العقد ضمن المسار /on/contracts:<contract_id>/<method>. يتم استخدام GET لإضافة الاشتراك وDELETE لإلغائه، ولا بد من الاعتماد على Rusk-Session-Id للحفاظ على الجلسة. يبدو الأمر كأنه تفاصيل واجهة برمجية، لكن في رأيي فهو في الحقيقة يذكّر بشيء واحد: الإشعارات الفورية نفسها ليست دفتر الأستاذ.
عندما يكون الاتصال طبيعيًا، تقوم المحفظة بتحديث الرصيد عبر الأحداث، ويقوم سوق التداول بتقديم عملية التجميع أو حالة الطلب عبر الأحداث. لكن بعد انقطاع الاتصال، لا تستطيع الجلسة إلا مساعدتك في استعادة علاقة الاشتراك، ولا يمكنها إثبات أنه لم يتم تفويت أي شيء في الوسط. الجزء الذي تم تفويته—لا يزال يجب الرجوع إليه من جديد في حالة البلوكات والمعاملات وحالة العقد ثم معالجته.
أتخيل سيناريو محددًا. تم بالفعل نشر تحويل DUSK الخاص بالمستخدم على السلسلة. وانقطع اتصال الاستماع لدى سوق التداول تمامًا لبضع دقائق. لا مشكلة في السجل الموجود على السلسلة، لكن الرصيد لم يُحدَّث. عند قيام المستخدم بإرسال مرة أخرى، قد تظهر في الخلفية سجلات انتظار معالجة مزدوجة. ما يراه فريق خدمة العملاء هو “لم يصل المبلغ”، وما يواجهه فريق العمليات هو تعويض عبر الأحداث مع مطابقة يدوية.
هذا يجعل لدي متطلبًا إضافيًا لواجهة أحداث @Dusk . كتابة نقطة إدخال الاشتراك في الوثائق هي مجرد الخطوة الأولى، أما الذي يحدد جودة التكامل حقًا فهو ما إذا كانت المحفظة وسوق التداول يمكنهما—بعد إعادة الاتصال—استعادة السياق عبر session، ثم سد الفجوة باستخدام حالة السلسلة على نحو موثوق. $DUSK يجب أن يحمل تدفق الأصول الحقيقي، والإشعارات الفورية وظيفتها التنبيه فقط؛ وفي النهاية يجب أن يكون هناك مسار آخر للتحقق والمراجعة. #dusk


