Skip to content

بناء لوحة مراقبة للأجهزة

حالة الاستخدام

استخدم هذا النمط للوحة تحكم على مستوى الحساب تعرض اتصال الأجهزة وحالة الملحقات مع إبقاء حركة HTTP قابلة للتنبؤ.

  • استخدم قوائم الأجهزة عبر REST للعرض الأولي، والتقسيم إلى صفحات، والمزامنة في الخلفية.
  • استخدم استعلام جهاز واحد عندما يحدّث المستخدم صراحةً عرض تفاصيل أو عندما تحتاج عملية إلى تأكيد.
  • استخدم أحداث WebSocket لتغيّرات الاتصال والمرحّل والمدخل الرقمي المستمرة.

لا تستعلم باستمرار عن كل جهاز عبر HTTP.

البنية الموصى بها

احتفظ بسجل حالة واحد لكل deviceId. استخدم stateUpdatedAt عند دمج الحالة في وقت التشغيل بحيث لا تستبدل البيانات القديمة البيانات الأحدث. تُحدّث أحداث الاتصال حالة الاتصال؛ يحدّد changes في device.state.changed المرحّلات أو المدخلات الرقمية المتأثرة، بينما peripherals كتلة حالة كاملة وليست تصحيحًا تزايديًا. اقرأ قيم المستشعرات والقيم التناظرية عندما يحدّث المستخدم أو عندما يتطلب سير العمل ذلك؛ لا تستعلم عن جميع الأجهزة بمعدل عالٍ.

التنفيذ خطوة بخطوة

  1. احصل على access token بصلاحية device:read.
  2. استدعِ سرد الأجهزة (بالإنجليزية)، واتبع التقسيم إلى صفحات، وخزّن deviceType وstatus والملحقات وstateUpdatedAt لكل جهاز.
  3. استعلم عن سرد تعريفات نوع الجهاز (بالإنجليزية) واربط كل deviceType بتعريف قدراته. خزّن هذه التعريفات مؤقتًا بدلًا من طلبها مع كل عرض.
  4. أنشئ تذكرة WebSocket (بالإنجليزية) أحادية الاستخدام، وأنشئ الاتصال، وابدأ تدفق نبض القلب الموثّق.
  5. طبّق أحداث device.connection.online وdevice.connection.offline وdevice.state.changed على سجل الجهاز المطابق.
  6. عندما يطلب المستخدم صراحةً بيانات محدَّثة لجهاز واحد، استدعِ الحصول على جهاز (بالإنجليزية) أو أرسل device.state.get (بالإنجليزية).
  7. بعد الانقطاع أو إعادة تشغيل العملية، أعِد الاتصال بتذكرة جديدة وأعِد بناء خط الأساس عبر REST قبل الوثوق بالعرض الحيّ مجددًا. حدّث فقط الأجهزة الحرجة للعمل بشكل فردي.

الواجهات والأحداث الرئيسية

الغرضالمرجع
القائمة الأولية والتقسيم إلى صفحاتسرد الأجهزة (بالإنجليزية)
واجهة موجّهة بالقدراتسرد تعريفات نوع الجهاز (بالإنجليزية)
تحديث صريح لجهاز واحدالحصول على جهاز (بالإنجليزية)
مصادقة WebSocketإنشاء WebSocket Ticket (بالإنجليزية)
تغيّرات الاتصالأحداث اتصال الجهاز (بالإنجليزية)
تغيّرات حالة الملحقاتحدث تغيّر حالة الجهاز (بالإنجليزية)

الفشل والتعافي

  • عند فقدان WebSocket، ضع علامة على القناة الحيّة كغير متاحة، وأعِد الاتصال بتراجع تدريجي وjitter، وأنشئ wsTicket جديدًا مع كل محاولة.
  • الأحداث المفقودة أثناء الانقطاع لا تُعاد. أعِد بناء خط أساس الحالة عبر REST بعد إعادة الاتصال.
  • إذا تنافس حدث واستعلام، احتفظ بالحالة ذات stateUpdatedAt الأحدث.
  • بعد 429 RATE_LIMITED، انتظر Retry-After. لا تنتقل إلى الاستعلام لكل جهاز لتعويض WebSocket منقطع.
  • قد يحتوي الجهاز OFFLINE على آخر حالة ملحقات متزامنة. اعرض حالة الاتصال وحداثة الحالة بشكل منفصل.

اعتبارات الإنتاج

  • خزّن حالة موحّدة لكل deviceId؛ حدّد قراءات المستشعرات بـ index + type.
  • اجعل تطبيق الأحداث تماثليًا (idempotent). توفّر أحداث الاتصال occurredAt، بينما توفّر أحداث الحالة stateUpdatedAt؛ تجاهل التحديثات الأقدم المنعكسة بالفعل في السجل الحالي.
  • خزّن الأحداث الحرجة للعمل فورًا، لأن WebSocket لا يعيد تشغيل السجل التاريخي.
  • راقب محاولات إعادة الاتصال، وتأخّر الأحداث، وفشل مزامنة REST، وقيم requestId دون تسجيل بيانات الاعتماد أو الرموز.

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

Docs buildVersion v1.5.8-20260814-180545-84
Copyright © 2026 WLTE