في معرض 3 يوي : الملقم المرسلة الأحداث

29 نوفمبر 2010 في 11:49 نيكولاس جيم Zakas | في التنمية ، يوي 3 معرض | لا توجد تعليقات

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

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

في قلب مشاريع الأعمال الصغيرة هو EventSource الكائن. و 3 يوي EventSource معرض بإنشاء وحدة تنفيذ متصفح الصليب من EventSource ، وبذلك دعم مقابل المرسلة أحداث خادم لجميع المتصفحات التي تدعم XMLHttpRequest ، بما في انترنت اكسبلورر 6 ، في حين يتراجع إلى تنفيذ الأصلية في المتصفحات التي تملكونها (سفاري حاليا 5 ، 7 كروم ، وأوبرا 10.7).

و EventSource يفسر استجابة لتيار الاحداث التي تدل على نوع المحتوى "نص / تيار الحدث") وحرائق الأحداث المناسبة. هناك ثلاثة أحداث محددة مسبقا :

  • open -- حرائق عند الملقم تم تأسيس اتصال مع.
  • message -- حرائق عندما تلقى رسالة هو جديد من الخادم. و event.data الملكية يحتوي على البيانات الجديدة.
  • error -- حرائق عند حدوث خطأ في معالجة تيار الحدث. مرة بإشعاع هذا الحدث ، وسيتم تجهيز أية أحداث أخرى وغير مغلقة بشكل دائم الاتصال بالخادم.

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

 data: hello data: hello data: world 

اثنين message أطلقت الأحداث مع هذا الدفق الحدث. الأول لديه event.data تعيين إلى "مرحبا" ، بينما الثاني يحتوي على event.data لتعيين "nworld \ مرحبا" (لاحظ سطر جديد).

هنا مثال لخلق جديد EventSource سبيل المثال :

 YUI({ gallery: 'gallery-2010.11.17-21-32' }).use('gallery-eventsource', function(Y) { var src = new Y.EventSource("stream.php"); src.on("open", function(event){ console.log("Connection opened!"); }); src.on("message", function(event){ console.log("Data received: " + event.data); }); src.on("error", function(event){ console.log("Error!"); }); }); 

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

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

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

 <%@page contentType="text/event-stream" buffer="none"%> <% //check for poll-only header String header = request.getHeader("X-YUIEventSource-PollOnly"); //check every so often to see if there's new data while(true) { //sleep for a second - simulate waiting for data Thread.sleep(1000); //output the current time, ensure there are two trailing newlines out.print("data: " + (new java.util.Date()).toString() + "x\n\n"); out.flush(); //if it's a poll-only request, break the loop, //which ends the request - the client will reconnect if (header != null){ break; } } %> 

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

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

و3 يوي حدة EventSource معرض تنفذ كلها تقريبا من المواصفات مشاريع الأعمال الصغيرة (يمكنك أن ترى في التعليمات البرمجية المصدر التي لا أجزاء تنفذ بعد من خلال البحث عن تعليقات "للقيام ب"). وهذا بسبب وصفها غامضة بعض الميزات. وحدة يدعم الميزات التالية :

  • أحداث بسيطة (الحريق message الحدث).
  • أحداث مخصص (إطلاق حدث تطابق الاسم المحدد في "الحدث :")
  • معرفات الحدث (التي احتلتها في event.lastEventId وإرسالها إلى الملقم)

الأجزاء التي لم تنفذ هي تقديم الدعم لإعادة الاتصال مرة و event.origin الممتلكات. خلاف ذلك ، كل شيء يجب أن تتصرف آخر نفس تنفيذ الأصلية.

لمزيد من القراءة

وتوسيع نطاق مشاركة : احفظ مع del.icio.us | يسو أنها! | صديق!

لا تعليقات حتى الآن »

آر إس إس للتعليقات على هذه الوظيفة. تركبك أوري

اترك التعليق

ملاحظة : التعليقات خاضعة للإشراف هي لتوقيت والعشرين. حذف الرسائل غير المرغوب فيها.

datetime=""> <del: <aالأقسام المختلفة title=""> <abbrhref="" title=""> <acronymtitle=""> <b><blockquotecite=""><cite><code>< <em><i><qcite=""> <strike><strong>

استضافته ياهو

جميع الحقوق محفوظة © 2006-2011 ياهو! جميع الحقوق محفوظة سياسة الخصوصية -- شروط الخدمة

بدعم من وورد على ياهو! استضافة المواقع .