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