HTML Server-Sent ইভেন্ট

Server-Sent ইভেন্ট ওয়েবসাইটকে সার্ভার থেকে অপডেট পাওয়ার জন্য সমর্থন করে

Server-Sent ইভেন্ট - একদিকের মেসেজিং

Server-Sent ইভেন্ট এটি ওয়েবসাইট যেমনভাবে স্বয়ংক্রিয়ভাবে সার্ভার থেকে অপডেট পায়

এর আগেও এই কাজ করা যেত, কিন্তু ওয়েবসাইটকে নতুন অপডেট সম্ভব করতে হতো। Server-Sent ইভেন্টের মাধ্যমে, অপডেট স্বয়ংক্রিয়ভাবে পৌঁছবে

যেমন: 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 নির্দিষ্ট করুন (এই উদাহরণে "demo_sse.php")
  • প্রত্যেকবার যখন একবার অপডেট প্রাপ্ত হয়, onmessage ইভেন্ট ঘটবে
  • onmessage ইভেন্ট ঘটলে, প্রাপ্ত ডাটা id হল "result" এলিমেন্টে পাঠানো হবে

সার্ভার-সেন্ট ইভেন্ট সমর্থন পরীক্ষা

TIY ইনস্ট্যান্সে, আমরা একটি অতিরিক্ত কোড লিখেছি যাতে সার্ভার থেকে ইভেন্ট পাঠানোর ব্রাউজার সমর্থন পরীক্ষা করা যায়:

if(typeof(EventSource) !== "undefined") {
    // হ্যাঁ! সার্ভার থেকে ইভেন্ট পাঠানো সমর্থন আছে!
    // কিছু কোড.....
}
    // ক্ষমা করুন! সার্ভার থেকে ইভেন্ট পাঠানো সমর্থন নেই!
}

সার্ভার প্রদেশ কোড ইনস্ট্যান্স

আপনাকে উদাহরণটি চালাতে, আপনাকে সার্ভার থেকে ডাটা আপডেট পাঠাতে পারতে হবে (যেমন 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" নির্দিষ্ট করুন
  • পৃষ্ঠা ক্যাশ না করা
  • পাঠাবার জন্য তারিখ নির্দিষ্ট করুন (সবসময় "data: "-এর সাথে শুরু করুন)
  • ওয়েবপেজে পুনরায় ফ্রেশ করা

EventSource অবজেক্ট

উপরোক্ত উদাহরণে, আমরা onmessage ইভেন্ট ব্যবহার করে সংবাদ পাই।কিন্তু অন্যান্য ইভেন্টও ব্যবহার করা যেতে পারে:

ইভেন্ট বিবরণ
onopen যখন সার্ভারের সাথে সংযোগ খোলা হয়
onmessage যখন সংবাদ পাওয়া যায়
onerror যখন ত্রুটি ঘটে