HTML 5 ·þÎñÆ÷·¢ËÍʼþ
HTML5 ·þÎñÆ÷·¢ËÍʼþ£¨server-sent event£©ÔÊÐíÍøÒ³»ñµÃÀ´×Ô·þÎñÆ÷µÄ¸üС£
Server-Sent ʼþ - µ¥ÏòÏûÏ¢´«µÝ
Server-Sent ʼþÖ¸µÄÊÇÍøÒ³×Ô¶¯»ñÈ¡À´×Ô·þÎñÆ÷µÄ¸üС£
ÒÔǰҲ¿ÉÄÜ×öµ½ÕâÒ»µã£¬Ç°ÌáÊÇÍøÒ³²»µÃ²»Ñ¯ÎÊÊÇ·ñÓпÉÓõĸüС£Í¨¹ý·þÎñÆ÷·¢ËÍʼþ£¬¸üÐÂÄܹ»×Ô¶¯µ½´ï¡£
Àý×Ó£ºFacebook/Twitter ¸üС¢¹À¼Û¸üС¢ÐµIJ©ÎÄ¡¢Èüʽá¹ûµÈ¡£
ä¯ÀÀÆ÷Ö§³Ö
ËùÓÐÖ÷Á÷ä¯ÀÀÆ÷¾ùÖ§³Ö·þÎñÆ÷·¢ËÍʼþ£¬³ýÁË Internet Explorer¡£
½ÓÊÕ 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") { // Yes! Server-sent events support! // Some code..... } else { // Sorry! No server-sent events support.. }
·þÎñÆ÷¶Ë´úÂëʵÀý
ΪÁËÈÃÉÏÃæµÄÀý×Ó¿ÉÒÔÔËÐУ¬Äú»¹ÐèÒªÄܹ»·¢ËÍÊý¾Ý¸üеķþÎñÆ÷£¨±ÈÈç PHP ºÍ ASP£©¡£
·þÎñÆ÷¶ËʼþÁ÷µÄÓï·¨ÊǷdz£¼òµ¥µÄ¡£°Ñ "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: " & now()) Response.Flush() %>
´úÂë½âÊÍ£º
- °Ñ±¨Í· "Content-Type" ÉèÖÃΪ "text/event-stream"
- ¹æ¶¨²»¶ÔÒ³Ãæ½øÐлº´æ
- Êä³ö·¢ËÍÈÕÆÚ£¨Ê¼ÖÕÒÔ "data: " ¿ªÍ·£©
- ÏòÍøÒ³Ë¢ÐÂÊä³öÊý¾Ý
EventSource ¶ÔÏó
ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇʹÓà onmessage ʼþÀ´»ñÈ¡ÏûÏ¢¡£²»¹ý»¹¿ÉÒÔʹÓÃÆäËûʼþ£º
ʼþ | ÃèÊö |
---|---|
onopen | µ±Í¨Íù·þÎñÆ÷µÄÁ¬½Ó±»´ò¿ª |
onmessage | µ±½ÓÊÕµ½ÏûÏ¢ |
onerror | µ±´íÎó·¢Éú |