سؤال

أحاول تنفيذ خادم Cometd/Bayeux على Android باستخدام Ijetty. يعمل تنفيذ الرصيف نفسه بشكل جيد في تقديم صفحات ثابتة مع Servlets. أحاول رفع مستوى الرهان قليلاً وإنشاء تطبيق Bayeux على الهاتف ولكني أواجه بعض المتاعب. يمكنني الوصول إلى الصفحة التي تحتوي على نصوص Dojo Cometd عليها ، لكنني غير قادر على الاشتراك في القناة. عندما أشاهد أدوات مطور Firebug/Chome ، أرى سلسلة من المنشورات/تحصل على بضعة ميلي ثانية (~ 14). ومع ذلك ، عندما أقوم بتشغيل تطبيق Cometd على جهاز عادي ، فإن المنشورات/تحصل على عدة ثوانٍ (حوالي 14 ثانية) قبل التوقيت وإعادة فتح الاتصال. هذا السيناريو الثاني منطقي بالنسبة لي مع فهمي لكيفية استمرار في HTTP. لذلك أعتقد أن شيئًا ما لا يسمح لهذه الاتصالات بتعليق القيمة قبل الأوان وإرجاع قيمة وبالتالي إغلاق الاتصال. سأقوم بنشر مصدري ، لكنني لست متأكدًا مما يجب نشره في نشر كل شيء ... (إنه مفتوح المصدر على الرغم من ذلك إذا كنت ترغب في إلقاء نظرة فهي http://webtext-droid.googlecode.com).

لذا فإن سؤالي هو ، هل يعتقد أي شخص أنه يمكن أن يكون هناك بعض القيود الأساسية التي يفرضها نظام Android الذي يمنع هذه servlets من العمل؟ هل هناك افتراضات يتم وضعها من قبل تنفيذ Jetty Bayeux فيما يتعلق بالنظام الأساسي؟ أم أنه من المرجح أن يكون لدي بطريقة أو بأخرى تنفيذ سيء لـ ContinuationCometServelt؟ يجب أن أشير إلى أن جميع المنشورات/تحصل على عودة العميل إرجاع 200 موافق ، لذلك لا أميل إلى الاعتقاد بأن نظام Android يقوم ببساطة بإنهاء الاتصال.

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

شكرًا،

كريس

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

المحلول

في حالة اكتشاف أي شخص هذا ولديه مشاكل مماثلة (وهذا ينطبق على جميع تطبيقات Cometd بغض النظر عن المضيف) ، اكتشفت أن المشكلة كانت باستخدام مكتبة Google JS. لسبب ما ، لم يكن لدى برنامج Dojo Scripts الذي كنت أقوم بتحميله من Google (1.4) تطبيقًا صحيحًا لـ Cometd. لقد قمت بتحويل البرنامج النصي Dojo إلى النصي الذي تم استخدامه بواسطة مثال Jetty-1.6.23 وهو يعمل بشكل مثالي.

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