الفعاليات المرسلة خادم تسمح صفحة على شبكة الإنترنت للحصول على التحديثات من خادم.
الفعاليات المرسلة الخادم - طريقة واحدة التراسل
حدث المرسلة الخادم عندما صفحة على شبكة الإنترنت يحصل التحديثات تلقائيا من خادم.
وكان هذا أيضا ممكنا من قبل، إلا أن صفحة الويب يجب أن نسأل إذا كانت أية تحديثات متوفرة. مع الأحداث أرسلت الخادم، التحديثات تأتي تلقائيا.
الأمثلة على ذلك: Facebook/Twitter التحديثات، والتحديثات سعر السهم، قنوات الأخبار والنتائج الرياضية، الخ
دعم المتصفح
الأرقام في الجدول تحدد إصدار المستعرض الأولى التي تدعم بشكل كامل أحداث أرسلت الخادم.
API | |||||
---|---|---|---|---|---|
SSE | 6.0 | غير معتمد | 6.0 | 5.0 | 11.5 |
تلقي الإخطارات الحدث-المرسلة خادم
و EventSource يستخدم الكائن لتلقي الإخطارات الحدث أرسلت الخادم:
مثال
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
انها محاولة لنفسك » وأوضح سبيل المثال:
- إنشاء جديد EventSource الكائن، وتحديد URL للصفحة إرسال التحديثات (in this example "demo_sse.php")
- في كل مرة يتم تلقي التحديث، onmessage يحدث الحدث
- عندما يكون onmessage يحدث الحدث، ووضع البيانات الواردة في عنصر مع id="result"
الوصول المرسلة خادم أحداث دعم
في tryit المثال أعلاه كانت هناك بعض خطوط إضافية من التعليمات البرمجية للتحقق من دعم المتصفح للأحداث المرسلة الخادم:
if(typeof(EventSource) !== "undefined") {
// Yes! Server-sent events support!
// Some code.....
} else {
// Sorry! No server-sent events support..
}
جانب الخادم مثال التعليمة البرمجية
لالمثال أعلاه للعمل، أنت بحاجة إلى خادم قادر على إرسال تحديثات البيانات (مثل PHP أو ASP).
بناء الجملة تيار الحدث من جانب الخادم بسيط. تعيين "Content-Type" رأس ل "text/event-stream" . الآن يمكنك البدء في إرسال تيارات الحدث.
التعليمات البرمجية في PHP (demo_sse.php) :
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
التعليمات البرمجية في ASP (VB) (demo_sse.asp) :
<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: The server time is: " & now())
Response.Flush()
%>
وأوضح الرمز:
- تعيين "Content-Type" رأس ل "text/event-stream"
- تحديد أن الصفحة لا ينبغي أن مؤقتا
- إخراج البيانات لإرسال ( Always start with "data: ")
- تدفق البيانات الإخراج إلى صفحة ويب
كائن ل EventSource
في الأمثلة أعلاه استخدمنا الحدث onmessage للحصول على الرسائل. لكن أحداث أخرى متوفرة أيضا:
أحداث | وصف |
---|---|
onopen | عند فتح اتصال بالخادم |
onmessage | عند تلقي رسالة |
onerror | عند حدوث خطأ |