কম্পিউটার টিউটোরিয়াল

HTML5-এ Server-Sent Events (SSE) হ্যান্ডলিং পদ্ধতি


Server-Sent Events (SSE) ক্লায়েন্ট-সাইড ইমপ্লিমেন্টেশন

Server-Sent Events (SSE) হলো একটি টেকনোলজি যেখানে সার্ভার থেকে ক্লায়েন্টে স্বয়ংক্রিয়ভাবে ডেটা পUSH করা হয়। এটি HTTP/HTTPS상의 একটি দীর্ঘস্থায়ী সংযোগ ব্যবহার করে। নিচে একটি বেসিক ইমপ্লিমেন্টেশন দেওয়া হলো:

সম্পূর্ণ কোড উদাহরণ

<!DOCTYPE html>
<html>
<head>
  <script>
    // DOM লোড হওয়ার পর ইভেন্ট লিসেনার যোগ করুন
    document.addEventListener('DOMContentLoaded', function() {
      const eventSource = document.querySelector('eventsource');
      const tickerDiv = document.getElementById('ticker');
      
      if (eventSource) {
        // 'server-time' ইভেন্টের জন্য লিসেনার
        eventSource.addEventListener('server-time', function(event) {
          // সার্ভার থেকে প্রেরিত ডেটা প্রদর্শন
          tickerDiv.textContent = event.data;
        }, false);
        
        // এরর হ্যান্ডলিং
        eventSource.onerror = function(err) {
          console.error('SSE সংযোগ ত্রুটি:', err);
          tickerDiv.textContent = 'সংযোগ বিচ্ছিন্ন হয়েছে। পুনরায় চেষ্টা করছি...';
        };
      } else {
        console.warn('<eventsource> এলিমেন্ট পাওয়া যায়নি।');
      }
    });
  </script>
</head>
<body>
  <div id="sse">
    <eventsource src="/cgi-bin/ticker.cgi" />
  </div>
  <div id="ticker" name="ticker">[সময় লোড হচ্ছে...]</div>
</body>
</html>

SSE-এর মূল বৈশিষ্ট্য

  • একমুখী যোগাযোগ: শুধু সার্ভার → ক্লায়েন্ট।
  • HTTP/HTTPS ওভার: ফায়ারওয়াল/প্রক্সি বান্ধব।
  • স্বয়ংক্রিয় রিকানেক্ট: ব্রাউজার আটোমেটিক রিকানেক্ট করে।
  • ইভেন্ট-ভিত্তিক: কাস্টম ইভেন্ট টাইপ সাপোর্ট করে।
  • হালকা ওজন: WebSocket-এর চেয়ে সিম্পল।

সার্ভার-সাইড নোট (PHP উদাহরণ)

<?php
// ticker.cgi বা ticker.php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');

while (true) {
  $time = date('Y-m-d H:i:s');
  echo "event: server-time\n";
  echo "data: {$time}\n\n";
  ob_flush();
  flush();
  sleep(1); // প্রতি সেকেন্ডে আপডেট
}
?>

ব্রাউজার সাপোর্ট ও পলিফিল

সকল আধুনিক ব্রাউজার SSE সাপোর্ট করে (IE বাদে)। Internet Explorer-এ পলিফিল ব্যবহার করতে হবে (যেমন: eventsource npm প্যাকেজ)।

SSE vs WebSocket

বৈশিষ্ট্য SSE WebSocket
দিক সার্ভার → ক্লায়েন্ট (একমুখী) দ্বিমুখী (Full-duplex)
প্রোটোকল HTTP/HTTPS WS/WSS (TCP ওভার)
রিকানেক্ট বিল্ট-ইন ম্যানুয়াল ইমপ্লিমেন্টেশন
বাইনারি ডেটা নहीं (টেক্সট মাত্র) হ্যাঁ
কানেকশন লিমিট ব্রাউজার লিমিট (সাধারণত 6/হোস্ট) অধিক ফ্লেক্সিবল
  1. জাভাস্ক্রিপ্ট দিয়ে HTML চাইল্ড নোড রিমুভ করা

  2. HTML ফর্মে ডেটা গ্রুপ করার পদ্ধতি

  3. HTML5-এ সার্ভার-সেন্ট ইভেন্টস (SSE) কীভাবে কাজ করে

  4. Jetpack Compose-এ UI ইভেন্ট হ্যান্ডলিং মাস্টার করুন