كيف يمكنني اكتشاف و/أو التعامل مع "الخطأ رقم 2030:هل تمت مواجهة نهاية الملف" على NetConnection في ActionScript 3؟

StackOverflow https://stackoverflow.com/questions/5493670

سؤال

أقوم حاليًا بكتابة عميل في ActionScript 3 يتحدث إلى خادم تطبيق/وسائط Red5 عبر كائن NetConnection.يرسل الخادم للعميل أنواعًا متعددة من البيانات عبر هذا الاتصال بما في ذلك مكالمات الفيديو والصوت والإجراءات عن بعد.بعد فترة زمنية غير محددة (أحيانًا 10 ثوانٍ، وأحيانًا 10 دقائق) أرى الخطأ التالي في نافذة منبثقة من إصدار Debug الخاص بعميل Flash:

"Error: Error #2030: End of file was encountered."

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

نظرًا لأن الخطأ ليس له أي تتبع مكدس مرتبط، فقد ذهبت إلى أبعد من ذلك بإضافة معالج استثناء لم يتم اكتشافه على كائن Sprite الأساسي الخاص بي:

public class MyClient extends Sprite
{
   public function FOWClient()
   {
      loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
   }

   private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
   {
      trace("UNCAUGHT EXCEPTION!!!");
   }        
}

سيتم استدعاء معالج الاستثناء الذي لم يتم اكتشافه بشكل صحيح إذا قمت بإلقاء بعض الأخطاء عمدًا، ولكن لن يتم استدعاؤه أبدًا عندما يحدث ذلك Error #2030 يحدث.

إذن هناك بالفعل نتيجتان مقبولتان بالنسبة لي:

  1. كيف يمكنني اكتشاف الخطأ "تمت مواجهة نهاية الملف" والتعامل معه في الكود؟
  2. إذا لم أتمكن من الإصابة به، فهل هناك أي أفكار حول سببه وكيفية إصلاحه؟

أنا متأكد تمامًا من أنني قمت بتضييق نطاق الأمر ليقتصر على مكالمات RPC التي يتم إجراؤها من الخادم الخاص بي إلى عميلي لأنه عندما أقوم بتعطيلها، مع ترك الصوت والفيديو، لا أرى المشكلة.لسوء الحظ، ليس لدي حتى الآن أي أفكار جيدة أبعد من ذلك.

هو موضع تقدير أي مساعدة.شكرًا!

هل كانت مفيدة؟

المحلول

يتم طرح بعض هذه الأخطاء إذا لم تتم إضافة المستمع المناسب.

هل تستمع ل asyncError و ioError الأحداث من netconnection الخاص بك؟

إذا لم يكن الأمر كذلك، فقط جربها.

نصائح أخرى

try
{

}
catch( e : EOFError )
{
    trace( e );     // EOFError: Error #2030: End of file was encountered.
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top