رويدادهاي سروري(SSE- Server Sent Events) باعث ميشود كه صفحه وب بتواند خودش را بروز رساند .اطلاعات مورد نيازش را از سرور از طريق اين رويدادها دريافت ميكند.
هنگاميكه صفحه وب بايد بصورت خود كار ابديت شود، اين كار ازطريق رويداد هاي ارسالي سرور انجام ميشود.
اين قبلا هم امكان پذير بود، اما صفحه وب بايد پرسش ميكرد كه آيا بروز رساني در دسترس است يا خير .با رويدادهاي بموقع ارسال شده سرور، بروز رساني بصورت خودكار انجام ميشود.
بروز رساني فيسبوك/ توئيتر، قيمت سهام، نتايج ورزشي وغيره نمونه هاي آن هستند.
در جدول زير اولين نسخه مرورگر كه از بروز رساني رويدادهاي سروري پشتيباني ميكند، آمده است.
API | |||||
---|---|---|---|---|---|
SSE | 6.0 | 79.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>"; };
شــرح مثال
در مثال بالا در اسكريپت كامل مثال خطوط اضافه تري براي كنترل پشتباني مرورگر براي ارسال رويداد سروري وجود دارد .اسكريپت كنترل مطابق زيراست:
if(typeof(EventSource) !== "undefined") {
// Yes! Server-sent events support!
// Some code.....
} else {
// Sorry! No server-sent events support..
}
براي اينكه مثال بالا كاركند، به اسكريپت سمت سروري نياز داريم كه قادر باشد، داده هاي بروز رساني را ارسال نمايد، مثل كدphp يا كد asp
نحوئ جريان رويداد سمت سرور ساده است .بايد در تابعheader() مقدار "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() %>
شــرح كد
يادآوري ـ تابعflush() در php باعث ميشود داده در بافر به صفحه منتقل شود .
در مثال بالا براي در يافت پيغام از رويداد"onmessage"استفاده شد .اما ساير رويداد موجود آن شئ مطابق جدول زيراست:
رويدادevent - | شـــرح |
onopen | هنگاميكه ارتباط با سرور برقرار ميشود اتفاق مي افتد. |
onmessage | هنگاميكه پيغامي ميرسد رخ ميدهد. |
onerror | هنگاميكه خطائي رخ ميدهد، اتفاق مي افتد |