- HTML 教程
- HTML 教程
- HTML - 简介
- HTML - 编辑器
- HTML - 基本标签
- HTML - 元素
- HTML - 属性
- HTML - 标题
- HTML - 段落
- HTML - 字体
- HTML - 块和内联元素
- HTML - 样式表
- HTML - 文本格式化
- HTML - 引用
- HTML - 注释
- HTML - 颜色
- HTML - 图像
- HTML - 图像映射
- HTML - iframe
- HTML - 短语标签
- HTML - 类
- HTML - ID
- HTML - 背景
- HTML 表格
- HTML - 表格
- HTML - 表格标题
- HTML - 表格样式
- HTML - 表格 Colgroup
- HTML - 嵌套表格
- HTML 列表
- HTML - 列表
- HTML - 无序列表
- HTML - 有序列表
- HTML - 定义列表
- HTML 链接
- HTML - 文本链接
- HTML - 图片链接
- HTML - 电子邮件链接
- HTML 颜色名称和值
- HTML - 颜色名称
- HTML - RGB 和 RGBA 颜色
- HTML - 十六进制颜色
- HTML - HSL 和 HSLA 颜色
- HTML 表单
- HTML - 表单
- HTML - 表单属性
- HTML - 表单控件
- HTML - 输入属性
- HTML 媒体
- HTML - 视频元素
- HTML - 音频元素
- HTML - 嵌入多媒体
- HTML 标头
- HTML - 头部
- HTML - 网站图标
- HTML - JavaScript
- HTML 布局
- HTML - 布局
- HTML - 布局元素
- HTML - CSS布局
- HTML - 响应式网页设计
- HTML - 特殊符号
- HTML - 表情符号
- HTML - 样式指南
- HTML 图形
- HTML - SVG
- HTML - 画布
- HTML API 接口
- HTML - Geolocation API
- HTML - 拖放 API
- HTML - Web Workers API
- HTML - WebSockets
- HTML - Web 存储
- HTML - 服务器发送事件
- HTML 杂项
- HTML - 数学标记语言
- HTML - 微观数据
- HTML - 索引数据库
- HTML - Web 消息传递
- HTML - CORS
- HTML - Web RTC
- HTML 演示
- HTML - 音频播放器
- HTML - 视频播放器
- HTML - Web 幻灯片台
- HTML 工具
- HTML - 二维码
- HTML - Modernizr
- HTML - 验证器
- HTML 备忘单
- HTML - 标签参考
- HTML - 属性参考
- HTML - 事件参考
- HTML - 字体参考
- HTML - ASCII 代码参考
- HTML - 实体
- MIME 媒体类型
- HTML - URL 编码
- HTML - ISO 语言代码
- HTML - 字符编码
- HTML - 已弃用的标签和属性
HTML - 服务器发送事件
服务器发送事件是一种将数据从服务器发送到网页的方法,而无需页面刷新或发出请求。这些事件对于创建实时应用程序(如聊天、新闻源或通知)非常有用。使用 SSE,我们可以将 DOM 事件从我们的 Web 服务器持续推送到访问者的浏览器。
事件流式处理方法打开与服务器的持久连接,在有新信息可用时将数据发送到客户端,无需连续轮询。服务器发送的事件标准化了我们将数据从服务器流式传输到客户端的方式。
如何在 Web 应用程序中使用 SSE?
要在 Web 应用程序中使用服务器发送的事件,我们需要向文档添加一个 <eventsource> 标签。<eventsource> 的 src 属性应指向一个 URL,该 URL 提供持久性 HTTP 连接,该连接发送包含事件的数据流。此外,URL 指向 PHP、PERL 或任何 Python 脚本,这些脚本将负责一致地发送事件数据。
实例
以下是需要服务器时间的 Web 应用程序的示例 HTML 代码。
<!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) {
// 服务器发送的警报时间
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>
在测试 Server-Sent 事件之前,我建议您确保 Web 浏览器支持此概念。