本文概述
- 什么是服务器发送的事件?
- 从服务器接收事件
- 检查浏览器对服务器发送事件的支持
- 从服务器发送事件
- 完整的例子
- 浏览器支持
什么是服务器发送的事件?每当我们执行某些事件并将其发送到服务器时, 例如通过将表单提交到服务器。因此, 从Web浏览器流到Web服务器的此类事件称为客户端事件。但是, 如果服务器向浏览器发送了一些更新或信息, 则此类事件称为服务器发送的事件。因此, 当浏览器从服务器自动更新时, 将发生服务器发送事件。
【HTML5服务器发送的事件】服务器发送的事件是单向的(始终从服务器到客户端)。或者可以称为单向消息传递。
从服务器接收事件服务器发送的事件使用EventSource对象从服务器接收事件。它指定生成事件的脚本的URI。
例:
if(typeof(EventSource) !== "undefined") {var source = new EventSource("ServerUpdate.php");
source.onmessage = function(event) {document.getElementById("output").innerHTML += event.data + "<
br>
";
}
代码说明:
- 首先, 创建新的EventSource对象, 并定义发送服务器更新的页面的URI。在这里, 我们已将ServerUpdate.php用于将更新发送到Web浏览器。
- 每次从服务器进行更新时, 都会发生onmessage事件, 并将消息打印在网页上。
- 发生的消息可以使用id“输出”显示在div上。
例:
<
!DOCTYPE html>
<
html>
<
head>
<
title>
HTML5 SSE API<
/title>
<
/head>
<
body>
<
div id="output">
<
/div>
<
script type="text/javascript">
if(typeof(EventSource)!=="undefined"){alert("Hey! Your browser is supporting.");
}else{alert("Sorry! Your browser is not supporting.");
} <
/script>
<
/body>
<
/html>
立即测试
从服务器发送事件要使用服务器发送功能, 我们需要一个可以将数据更新发送到Web浏览器的服务器。为此, 我们需要使用ASP, PHP或任何动态语言创建文件。
以下是显示服务器更新的示例:
ServerUpdate.php:
例:
<
?phpheader('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
//Get the current time of server$time = date('r');
echo "data: The Current Server time is: {$time}\n\n";
flush();
?>
代码说明:
- 在代码的第一行中, 我们将“ Content-type”标头设置为“ text / event-stream”。服务器端事件标准需要它。
- 第二行通知服务器关闭缓存, 否则服务器更新可能会被缓存。
- echo“ data:当前服务器时间为:{$ time} \ n \ n”; 它创建要发送的数据输出, 并且必须始终以data:开头。
- 然后, 我们使用了flush()方法, 该方法确保将数据立即发送到网页。
<
!DOCTYPE html>
<
html>
<
head>
<
style type="text/css">
div{text-align: center;
background-color: #98f5ff;
}<
/style>
<
/head>
<
body>
<
h1 align="center">
Dynamic Server Updates<
/h1>
<
div id="output">
<
/div>
<
script>
if(typeof(EventSource) !== "undefined") {var source = new EventSource("ServerUpdate.php");
source.onmessage = function(event) {document.getElementById("output").innerHTML += event.data + "<
br>
";
}} else {alert("Sorry, your browser does not support the server sent updates");
}<
/script>
<
/body>
<
/html>
立即测试
注意:要在浏览器上执行上述代码, 你需要在系统上安装服务器, 然后在localhost上运行该服务器。你可以安装任何服务器, 例如MYSQL, XAMPP等。浏览器支持
API | Chrome | IE | Firefox | Opera | Safari |
SSE | 6.0 | Not Supported | 6.0 | 11.5 | 5.0 |
推荐阅读
- HTML small标记
- HTML select标签
- HTML section标签
- HTML script脚本标签
- HTML samp标记
- HTML s标记
- HTML ruby标记
- HTML rt标记
- HTML rp标签