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 | µ±·¢Éú´íÎó |