هل هناك طريقة لدفع البيانات من خادم الويب إلى المتصفح ؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

هل هناك أفضل من طريقة (حتى باستخدام اياكس) بخلاف الاقتراع الخادم في كثير من الأحيان ؟

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

المحلول

نعم ، ما تبحث عنه هو المذنب http://en.wikipedia.org/wiki/Comet_(البرمجة).أخرى جيدة جوجل حيث أن البحث عن اياكس-دفع وعكس-اياكس.

نصائح أخرى

نعم, هذا يسمى عكس اياكس أو المذنب.المذنب هو في الأساس تعبير شامل لكل طرق مختلفة لفتح طويلة الأمد طلبات HTTP من أجل دفع البيانات في الوقت الحقيقي إلى مستعرض ويب.أنصح StreamHub دفع الخادم, لديهم بعض العروض باردة و انه من الاسهل بكثير أن تبدأ مع أي من الملقمات الأخرى.تحقق من الشروع في العمل مع المذنب و StreamHub التعليمي على مقدمة سريعة.يمكنك استخدام الجماعة الطبعة التي هي متاحة للتحميل مجانا ولكن محدودة إلى 20 المستخدمين المتزامنين.النسخة التجارية تستحق ذلك الدعم وحدها بالإضافة إلى الحصول على SSL و سطح المكتب .صافي & Java العميل محولات.مساعدة متاحة عبر مجموعة جوجل, هناك مجموعة جيدة من الدروس على النت و هناك GWT المذنب محول أيضا.

في الوقت الحاضر يجب عليك استخدام WebSockets.هذا هو 2011 المعيار الذي يسمح لبدء اتصالات مع HTTP ومن ثم الارتقاء بها إلى اتجاهين العميل-الخادم الرسالة القائمة على الاتصالات.

يمكنك بسهولة بدء الاتصال من جافا سكريبت:

var ws = new WebSocket("ws://your.domain.com/somePathIfYouNeed?args=any");
ws.onmessage = function (evt) 
{
  var message = evt.data;
  //decode message (with JSON or something) and do the needed
};

قطع من جانب معالجة تعتمد على tenchnology المكدس.

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

http://en.wikipedia.org/wiki/Comet_(البرمجة)

المذنب هو بالتأكيد ما تريد.اعتمادا على اللغة/إطار متطلبات هناك ملقم مختلف المكتبات المتاحة.على سبيل المثال ، WebSync هو IIS متكاملة المذنب خادم ASP.NET/C#/IIS المطورين, و هناك مجموعة أخرى من ملقمات مستقل وكذلك إذا كنت بحاجة إلى تشديد التكامل مع لغات أخرى.

أود أن أقترح بشدة أن تستثمر بعض الوقت على المذنب, ولكن أنا لا أعرف التنفيذ الفعلي أو المكتبة التي يمكن أن تستخدم.

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

ما فعلناه كان من أجل تنفيذ خدمة صغيرة على الملقم الذي يتحدث على الهاتف-نظام ينتظر الأحداث الجديدة ويحافظ على صورة الوضع.توفر هذه الخدمة صغير مزود الويب.

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

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

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

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

إذا كان شخص ما يمكن أن توفر الفعلية خفيفة الوزن تنفيذ هذا عظيم!

بديل للاهتمام أن المذنب هو استخدام مآخذ في فلاش.

بعد آخر, القياسية, طريقة SSE (خادم أرسلت الأحداث ، المعروف أيضا باسم EventSource, بعد كائن جافا سكريبت).

المذنب كان في الواقع ابتدعه أليكس راسيل من دوجو أدوات ( http://www.dojotoolkit.org ).هنا هو ارتباط إلى أكثر infomration http://cometdproject.dojotoolkit.org/

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

يمكنك استخدام فلاش/فليكس التطبيق على العميل مع BlazeDS أو LiveCycle على جانب الملقم.البيانات يمكن أن تكون دفعت إلى العميل باستخدام RTMP الصدد.تكون على علم بأن RTMP يستخدم غير المنفذ القياسي.ولكن يمكنك بسهولة العودة إلى الاقتراع إذا كان المنفذ مغلق.

فمن الممكن لتحقيق ما كنت تهدف من خلال استخدام اتصالات http المستمرة.

تحقق من المذنب المادة في ويكيبيديا ، هذا هو مكان جيد للبدء.

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

قد يكون من المفيد التدقيق بها نيزك الخادم الذي هو خادم ويب مصممة المذنب.لطيفة demo كما أنه يستخدم من قبل twitterfall.

بمجرد فتح اتصال إلى الملقم يمكن أن تبقى مفتوحة و يمكن دفع المحتوى من فترة طويلة فعلت مع استخدام multipart/x-mixed-replace ولكن هذا لم يعمل في IE.

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

قد تتمكن من محاولة لدينا المذنب المكون - على الرغم من انها للغاية التجريبية...!

يرجى التحقق من هذه المكتبة https://github.com/SignalR/SignalR لمعرفة كيفية دفع البيانات إلى العملاء بشكل حيوي كما أن تصبح متوفرة

يمكنك أيضا أن ننظر في جافا Pushlets إذا كنت تستخدم صفحات jsp.

قد ترغب في النظر في ReverseHTTP أيضا.

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