HTML Server-Sent Events API
Server-Sent Events (SSE) API HTTP இணைப்பு மூலம் சர்வரிலிருந்து வலைப்பக்கத்திற்கு செய்திகள்/புதுப்பிப்புகளை தள்ள அனுமதிக்கிறது.
சர்வர்-அனுப்பிய நிகழ்வுகள் - ஒரு வழி செய்தியனுப்புதல்
ஒரு சர்வர்-அனுப்பிய நிகழ்வு என்பது ஒரு வலைப்பக்கம் சர்வரிலிருந்து தானாகவே செய்திகள்/புதுப்பிப்புகளைப் பெறும் போது ஆகும்.
பொதுவாக, ஒரு வலைப்பக்கம் சர்வரிலிருந்து தரவைக் கோர வேண்டும், ஆனால் சர்வர்-அனுப்பிய நிகழ்வுகளுடன், புதுப்பிப்புகள் தானாகவே தள்ளப்படுகின்றன.
எடுத்துக்காட்டுகள்: Facebook/Twitter புதுப்பிப்புகள், பங்குச் சந்தை புதுப்பிப்புகள், செய்தி ஊட்டங்கள், விளையாட்டு முடிவுகள் போன்றவை.
உலாவி ஆதரவு
அட்டவணையில் உள்ள எண்கள் சர்வர்-அனுப்பிய நிகழ்வுகள் API ஐ முழுமையாக ஆதரிக்கும் முதல் உலாவி பதிப்பைக் குறிக்கின்றன.
| API | Chrome | Edge | Firefox | Safari | Opera |
|---|---|---|---|---|---|
| SSE | 6.0 | 79.0 | 6.0 | 5.0 | 11.5 |
சர்வர்-அனுப்பிய நிகழ்வு அறிவிப்புகளைப் பெறுதல்
EventSource பொருள் சர்வர்-அனுப்பிய நிகழ்வு அறிவிப்புகளைப் பெற பயன்படுகிறது:
எடுத்துக்காட்டு
<script>
const x = document.getElementById("result");
// உலாவி SSE ஆதரவை சரிபார்க்கவும்
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
x.innerHTML += event.data + "<br>";
};
} else {
x.innerHTML = "Sorry, no support for server-sent events.";
}
</script>
எடுத்துக்காட்டு விளக்கம்:
- ஒரு புதிய EventSource பொருளை உருவாக்கி, புதுப்பிப்புகளை அனுப்பும் பக்கத்தின் URL ஐக் குறிப்பிடவும் (இந்த எடுத்துக்காட்டில் "demo_sse.php")
- ஒரு புதுப்பிப்பு பெறப்படும் ஒவ்வொரு முறையும்,
onmessageநிகழ்வு ஏற்படுகிறது onmessageநிகழ்வு ஏற்படும் போது, பெறப்பட்ட தரவைid="result"உள்ள உறுப்பில் வைக்கவும்
உலாவி ஆதரவை சரிபார்க்கவும்
மேலே உள்ள எடுத்துக்காட்டில் சர்வர்-அனுப்பிய நிகழ்வுகளுக்கான உலாவி ஆதரவைச் சரிபார்க்க சில கூடுதல் குறியீட்டு வரிகள் இருந்தன:
எடுத்துக்காட்டு
if(typeof(EventSource) !== "undefined") {
// ஆம்! சர்வர்-அனுப்பிய நிகழ்வுகள் ஆதரவு!
// சில குறியீடு.....
} else {
// மன்னிக்கவும்! சர்வர்-அனுப்பிய நிகழ்வுகள் ஆதரவு இல்லை..
}
சர்வர்-பக்க குறியீடு எடுத்துக்காட்டு
மேலே உள்ள எடுத்துக்காட்டு வேலை செய்ய, நீங்கள் தரவு புதுப்பிப்புகளை அனுப்பக்கூடிய சர்வர் தேவை (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 நிகழ்வைப் பயன்படுத்தினோம். ஆனால் பிற நிகழ்வுகளும் கிடைக்கின்றன:
சர்வருடன் இணைப்பு திறக்கப்படும் போது
ஒரு செய்தி பெறப்படும் போது
ஒரு பிழை ஏற்படும் போது
SSE vs AJAX Polling
Server-Sent Events
- ஒரு வழி தொடர்பு (சர்வர் → கிளையன்)
- தொடர்ச்சியான HTTP இணைப்பு
- தானாக புதுப்பிப்புகள்
- குறைந்த தாமதம்
- குறைந்த பேண்ட்விட்த் பயன்பாடு
- மீண்டும் இணைப்பு தானாக
AJAX Polling
- இரு வழி தொடர்பு
- தனி கோரிக்கைகள்
- தொடர்ச்சியான கோரிக்கைகள் தேவை
- அதிக தாமதம்
- அதிக பேண்ட்விட்த் பயன்பாடு
- கையேடு மீண்டும் இணைப்பு
ஊடாடும் நடைமுறை
சர்வர்-அனுப்பிய நிகழ்வுகள் நடைமுறை
கீழே உள்ள பொத்தானைக் கிளிக் செய்து சர்வருடன் இணைக்கவும். சர்வர் இணைப்பு நிலை மற்றும் டைம்ஸ்டாம்ப்கள் காட்டப்படும்.
செயற்கை சர்வர்:
இந்த நடைமுறையில், நாங்கள் ஒரு செயற்கை சர்வரைப் பயன்படுத்துகிறோம், இது ஒவ்வொரு 2 வினாடிகளுக்கும் முன்னோக்கி நகரும் டைம்ஸ்டாம்ப்களை அனுப்புகிறது. உண்மையான பயன்பாட்டில், இது உண்மையான சர்வருக்குப் பதிலாக இருக்கும்.