حضور المستخدم لا يحدث الخادم عند المغادرة بسبب عدم نشاط المستخدم أو المتصفح

عندما ندخل في نفس الشاشة فقط القنوات التي لديها onlyWhenActive افتراضيًا (وهو صحيح افتراضيًا عند استدعاء channel.enter()) → يتم إجراء استدعاء خاطئ للخادم عند الانتقال إلى وضع الخمول لتحديث هذه القنوات.

كيفية إعادة الإنتاج

  • قم أولاً بتعطيل المكون الإضافي للدردشة إذا كان ممكّنًا (هذا مهم لأن المكونات الإضافية للدردشة تجري استدعاءً في جميع الشاشات إلى .enter({onlyWhenActive: false} مع تعيين الخيار onlyWhenActive إلى false)

  • أضف قناة لغرض العرض التوضيحي. اخترت topic-presence-display.js وأضفت هذا:

  @on("init")
  _init() {
    this._presentChannel = this.presence.getChannel('/presence-idle-demo');
    this._presentChannel.enter();
  },
  • افتح أي موضوع مع فتح وحدة تحكم شبكة المتصفح → يجب أن ترى استدعاءً أولاً إلى /presence/update

  • قم بتصغير نافذة المتصفح (مع فتح علامة التبويب الشبكة) وانتظر أكثر بقليل من 10 ثوانٍ (هذا هو وقت عدم نشاط المتصفح افتراضيًا)

  • افتح المتصفح مرة أخرى وانظر إلى آخر استدعاء تم إجراؤه إلى /presence/update

النتيجة الحالية:

بينما يجب أن يكون leave_channels[]: /presence-idle-demo

فتحت طلب سحب:

6 إعجابات

تحية على التصحيح الدقيق هنا والعثور على السبب الجذري… سنراجع هذا الأسبوع ونرى ما إذا كان بإمكاننا دمج الإصلاح!

6 إعجابات

قام @david بدفع هذا إلى خط النهاية وتم دمجه الآن :tada:
شكراً @AhmedLoud على طرح هذا وتقديم طلب سحب :clap:

7 إعجابات