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