首页 前端知识 无涯教程-HTML5 - SSE推送事件

无涯教程-HTML5 - SSE推送事件

2024-06-18 00:06:35 前端知识 前端哥 468 249 我要收藏

传统的Web应用程序会生成事件,这些事件将分派到Web服务器。如单击链接即可从服务器请求一个新页面。

与HTML5一起,WHATWG Web Applications 1.0引入了从Web服务器流向Web浏览器的事件它们被称为服务器推送事件(SSE)。使用SSE,您可以将DOM事件从Web服务器连续推送到访问者的浏览器。

SSE的Web应用程序

要在Web应用程序中使用服务器发送的事件,您需要在文档中添加<eventsource>元素。

<eventsource>元素的src属性应该指向一个URL,该URL应该提供一个持久的HTTP连接,该连接发送包含事件的数据流。

<!DOCTYPE HTML>

<html>
   <head>
   
      <script type="text/javascript">
         /* Define event handling logic here */
      </script>
   </head>
   
   <body>
      <div id="sse">
         <eventsource src="/cgi-bin/ticker.cgi" />
      </div>
		
      <div id="ticker">
         <TIME>
      </div>
   </body>
</html>

SSE的服务器端脚本

服务器端脚本应发送 Content-type 标头,以指定 text/event-stream 类型,如下所示。

print "Content-Type: text/event-stream\n\n";

设置Content-Type后,服务器端脚本将发送 Event :标签,后跟事件名称。以下示例将发送Server-Time作为事件名称,并以换行符终止。

print "Event: server-time\n";

最后一步是使用 Data :标签发送事件数据,其后是字符串值的整数,并以换行符终止,如下所示-

$time=localtime();
print "Data: $time\n";

最后,下面是用Perl编写的完整ticker.cgi-

#!/usr/bin/perl  
print "Content-Type: text/event-stream\n\n";  

while(true) { 
   print "Event: server-time\n"; 
   $time=localtime(); 
   print "Data: $time\n"; 
   sleep(5); 
} 

处理服务器发送事件

让无涯教程修改Web应用程序以处理服务器发送的事件。以下是最后一个示例。

<!DOCTYPE HTML> 

<html>  
   <head> 
  
      <script type="text/javascript"> 
         document.getElementsByTagName("eventsource")[0].addEventListener("server-time", 
         eventHandler, false); 
    
         function eventHandler(event) { 

            //Alert time sent by the server 
            document.querySelector(#ticker).innerHTML=event.data; 
         } 
      </script> 
   </head> 
  
   <body> 
      <div id="sse"> 
         <eventsource src="/cgi-bin/ticker.cgi" /> 
      </div> 
   
      <div id="ticker" name="ticker"> 
         [TIME] 
      </div> 
   </body> 
</html>

在测试服务器发送的事件之前,建议您确保Web浏览器支持此概念。

HTML5 - SSE推送事件 - 无涯教程网无涯教程网提供传统的Web应用程序会生成事件,这些事件将分派到Web服务器。如单击链接即可从服务器请...https://www.learnfk.com/html5/html5-server-sent-events.html

转载请注明出处或者链接地址:https://www.qianduange.cn//article/12587.html
标签
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!