هل هناك بديل لاياكس الذي لا يتطلب الاقتراع بدون تعديلات جانب الخادم؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أحاول أن إنشاء "اياكس" الصغيرة والأساسية عبة متعددة القائمة. يتم إعطاء إحداثيات الأشياء من قبل PHP "معالج". يتم استطلاع آراء هذا الملف handler.php كل 200MS، باستخدام اياكس.

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

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

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

المحلول

وهنا حل - استخدام موفر المذنب ادارة العلاقات، مثل WebSync عند الطلب . لا موارد الخادم ما يدعو للقلق، استضافة مشتركة أم لا، نظرا لأنه تفرغ كل شيء، ويمكنك دفع من المعلومات حسب الحاجة.

وبما أنه من ادارة العلاقات، وأنها سوف تعمل مع أي لغة الملقم. لPHP، هناك بالفعل الناشر كتابة وعلى استعداد للذهاب.

نصائح أخرى

يستخدم

والمذنب عموما لهذا النوع من الشيء، وأنه يمكن أن يكون الإعداد الهش كما انها ليست تقنية مشتركة خاصة لذلك يمكن أن يكون من السهل عدم "الحق في الحصول عليها." وقال ان هناك المزيد من الموارد المتاحة الآن مما كانت عليه عندما الأول الماضي أنها حاولت ~ 2 منذ سنوات.

وأنا لا أعتقد أنك تستطيع أن تفعل ما كنت أفكر ويكون handler.php ببساطة لن يعود أي شيء، ووقف تنفيذ: إن خادم الويب الحفاظ على اتصال مفتوح ومنع أي اقتراع آخر حتى لا handler.php شيء (ينهي أو يوفر الإخراج). عندما تفعل ذلك، كنت لا تزال التعامل مع أي رد.

ويمكنك أن تجرب أسلوب الاقتراع طويلة، حيث يسمح AJAX بك مهلة كبيرة جدا (على سبيل المثال 30 ثانية)، وhandler.php يدور دون الاستجابة حتى لديه شيء للتقرير، يعود ذلك الحين. (أنت تريد أن تأكد من الغزل لا مورد كثيفة). إذا handler.php "انتهاء مدة الصلاحية" ولا شيء يحدث، يكون ذلك الخروج والسماح استطلاع AJAX مرة أخرى. وبما أنه لا يحدث إلا كل 30 ثانية، وسوف يكون هناك تحسن كبير على ~ 5 مرات في الثانية. ومن شأن ذلك أن إبقاء الاقتراع الخاصة بك إلى الحد الأدنى.

ولكن هذا النوع من الشيء تم تصميم المذنب ل.

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

ومنذ كنت تستخدم PHP، قد يكون أسلوب واحد بسيط لديك رمز PHP استدعاء قيادة النوم ل200MS في وقت بين عمليات فحص وتغيير البيانات ومن ثم إعادة البيانات إلى العميل عندما تفعل ذلك التغيير.

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

وبما أن هذا هو الموسومة "HTML5": HTML5 لديها <لأ href = "http://www.whatwg.org/specs/web-apps/current-work/#the-eventsource-element" يختلط = "noreferrer" > <eventsource> و WebSocket ، ولكن تنفيذ الجانب لا يزال في المستقبل المتوتر في الممارسة العملية.

وأوبرا تنفيذها نسخة قديمة من <eventsource> دعا <event-source>.

ويجب أن الملقم جزء في هذا المجال. تحقق مع مزود استضافة ما هي الوحدات المتاحة. أو محاولة لإقناعهم لدعم المذنب.

وربما يجب عليك أن تنظر خادم الافتراضية الخاصة صغير (VPS) لهذا الغرض.

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

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