HTML Server-Sent ʼþ

Server-Sent ʼþÔÊÐíÍøÒ³´Ó·þÎñÆ÷»ñµÃ¸üС£

Server-Sent ʼþ - One Way Messaging

Server-Sent ʼþÖ¸µÄÊÇÍøÒ³×Ô¶¯´Ó·þÎñÆ÷»ñµÃ¸üС£

ÒÔǰҲ¿ÉÄÜ×öµ½ÕâÒ»µã£¬Ç°ÌáÊÇÍøÒ³²»µÃ²»Ñ¯ÎÊÊÇ·ñÓпÉÓõĸüС£Í¨¹ý Server-Sent ʼþ£¬¸üÐÂÄܹ»×Ô¶¯µ½´ï¡£

ÀýÈ磺Facebook/Twitter ¸üС¢¹É¼Û¸üС¢ÐµIJ©ÎÄ¡¢Èüʽá¹û£¬µÈµÈ¡£

ä¯ÀÀÆ÷Ö§³Ö

±í¸ñÖеÄÊý×ÖָʾÍêȫ֧³Ö server-sent ʼþµÄÊ׸öä¯ÀÀÆ÷¡£

API
SSE 6.0 ²»Ö§³Ö 6.0 5.0 11.5

½ÓÊÕ Server-Sent ʼþ֪ͨ

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" µÄÔªËØÖÐ

¼ì²â Server-Sent ʼþÖ§³Ö

ÔÚ TIY ʵÀýÖУ¬ÎÒÃDZàдÁËÒ»¶Î¶îÍâµÄ´úÂëÀ´¼ì²â·þÎñÆ÷·¢ËÍʼþµÄä¯ÀÀÆ÷Ö§³Ö£º

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 ʼþÀ´»ñÈ¡ÏûÏ¢¡£²»¹ý»¹¿ÉÒÔʹÓÃÆäËûʼþ£º

ʼþ ÃèÊö
onopen µ±Í¨Íù·þÎñÆ÷µÄÁ¬½Ó±»´ò¿ª
onmessage µ±½ÓÊÕµ½ÏûÏ¢
onerror µ±·¢Éú´íÎó
VUE