سؤال

أنا ألعب قليلاً مع XMLHTTPrequestObjects + Comet Long Colling. (عادة ، سمحت لـ GWT أو مقبض إطار آخر لهذا بالنسبة لي ، لكنني أريد أن أتعلم المزيد عنها.)

كتبت الرمز التالي:

function longPoll() {
  var xhr = createXHR(); // Creates an XmlHttpRequestObject
  xhr.open('GET', 'LongPollServlet', true);
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {

        if (xhr.status == 200) {
            ...
        }

        if (xhr.status > 0) {
            longPoll();
        }
    }
  }
  xhr.send(null);
}

...
<body onload="javascript:longPoll()">...

لقد لفت longPoll() استدعاء في بيان IF يتحقق status > 0, لأنني واجهت ، أنه عندما أغادر الصفحة (عن طريق التصفح في مكان آخر ، أو عن طريق إعادة تحميلها) ، يتم إرسال مكالمة المذنب غير الضرورية الأخيرة. وعلى Firefox ، فإنه يسبب مشاكل حادة عند إجراء إعادة تحميل الصفحة ، لسبب ما لم أفهمه تمامًا بعد.

سؤال: هل هذا status تحقق من الطريقة الصحيحة للتعامل مع هذه المشكلة ، أم أن هناك حلًا أفضل؟

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

المحلول

إجابتي الحالية - حتى تثبت كاذبة - هي أن الحل صحيح.

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top