‎‎رويدادهاي سروريHTML SSE API -‎

Previous >    <Next  

‎رويدادهاي سروري(SSE-‎ Server Sent Events) ‎باعث ميشود كه صفحه وب بتواند خودش را بروز رساند .اطلاعات مورد نيازش را از سرور از طريق ‎اين رويدادها دريافت ميكند.

‎Sever -‎Send Events -‎ one Way Messaging‎

‎‎پيام رساني يك طرفه‎ رويداد هاي ارسالي سرور -

‎هنگاميكه صفحه وب بايد بصورت خود كار ابديت شود، اين كار ازطريق رويداد هاي ارسالي سرور انجام ‎ميشود.

‎اين قبلا هم امكان پذير بود، اما صفحه وب بايد پرسش ميكرد كه آيا بروز رساني در دسترس است يا ‎خير .با رويدادهاي بموقع ارسال شده سرور، بروز رساني بصورت خودكار انجام ميشود.

‎‎‎بروز رساني فيسبوك/ توئيتر، قيمت سهام، نتايج ورزشي وغيره نمونه هاي آن هستند.

‎‎پشتيباني مرورگرBrowser Support -‎

‎‎در جدول زير اولين نسخه مرورگر كه از بروز رساني رويدادهاي سروري پشتيباني ميكند، آمده است.

‎API‎ Chorome Edge Firefox Safari Opera
‎SSE‎ ‎‎6.0‎ ‎‎79.0‎ ‎‎6.0‎ ‎‎5.0‎ ‎‎11.5‎

‎‎دريافت اطلاعيه رويداد هاي سرورReceive Server-‎Sent Event Notification -‎

‎‎شئEventSource براي دريافت اطلاعيه رويدادهاي سروريست.

‎‎مثال ـ دريافت اطلاعيه رويداد سروري

var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
  document.getElementById("result").innerHTML += event.data + "<br>";
}; 

--(go to editor for change code and run)

‎‎شــرح مثال

‎Check Server-‎Sent Events Support‎

‎‎كنترل پشتيباني ارسال رويداد سرور

‎در مثال بالا در اسكريپت كامل مثال خطوط اضافه تري براي كنترل پشتباني مرورگر براي ارسال ‎رويداد سروري وجود دارد .اسكريپت كنترل مطابق زيراست:

if(typeof(EventSource) !== "undefined") {
  // Yes! Server-sent events support!
  // Some code.....
} else {
  // Sorry! No server-sent events support..
} 

‎‎مثال كد سمت سرورSever-‎Side Code Example -‎

‎براي اينكه مثال بالا كاركند، به اسكريپت سمت سروري نياز داريم كه قادر باشد، داده هاي بروز ‎رساني را ارسال نمايد، مثل كد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 باعث ميشود داده در بافر به صفحه منتقل شود .

‎‎شئEventSource

‎در مثال بالا براي در يافت پيغام از رويداد‎"onmessage‎"‎استفاده شد .اما ساير رويداد موجود آن ‎شئ مطابق جدول زيراست:

‎‎رويدادevent -‎ ‎‎شـــرح
‎onopen‎ ‎‎هنگاميكه ارتباط با سرور برقرار ميشود اتفاق مي افتد.
‎onmessage‎ ‎‎هنگاميكه پيغامي ميرسد رخ ميدهد.
‎onerror‎ ‎‎هنگاميكه خطائي رخ ميدهد، اتفاق مي افتد

Previous >    <Next