首页 web前端 H5教程 HTML5中MessageEvent以及SSE的规范

HTML5中MessageEvent以及SSE的规范

May 28, 2018 pm 04:16 PM

1.MessageEvent接口

HTML5规范中定义的新的通信方式,无论是WebSocket还是SSE,包括实现视频音频通信的WebRTC,都是基于HTML5规范中定义的一个接口:MessageEvent。这是一个基于消息的事件。首先我们可以看一下在JavaScript中,传统的事件类型有哪些。

传统的DOM事件的基类主要包括:

(1)UIEvents:一般化的UI事件,其中鼠标事件和键盘事件都继承自UI事件;

(2)MouseEvents:一般化的鼠标事件,比如click事件、mousemove事件等,都是MouseEvents事件类型的实例;

(3)MutationEvents:一般化的DOM变动事件;

(4)HTMLEvents:一般化的HTML事件。

而HTML5中新增添的MessageEvent事件,是专门用来进行事件传输的事件。它除了包含Event的属性之外,还包含一些自己特有的属性。接口具体代码这里就不贴了,可以查看HTML5规范的第880页查看。

MessageEvent新增的重要属性包括:

(1)data:这里面存储的就是服务器发送的数据

(2)lastEventId:这里面存放的是最后一次的事件ID字符串

除此之外还包括origin、ports、source等属性。下面通过对SSE实现的分析,了解如何使用MessageEvent。

2、SSE和MessageEvent

SSE客户端的实现就使用了MessageEvent接口。

服务器在清单中的各个字段会按照一种规则被客户端进行解读,其中的id字段就对应着MessageEvent中的lastEventId。其中的data字段定义的数据通过解读后,就会被传送到MessageEvent的data字段,看如下代码:

var es = new EventSource("test.php");
es.addEventListener("message", function(e){
    console.log(e);
})
登录后复制

这里面我们直接使用事件对象的处理方法,在Chrome控制台中打印出这个事件对象的结构。可以看到该对象的data字段就是test.php中发送过来的数据,它的type是message,而其原型继承的就是MessageEvent。

此外还要注意,SSE服务器清单中的retry是一个内部属性,是不能通过JavaScript代码获取的。

3.EventSource接口

我们在SSE中使用的EventSource接口在HTML5规范中定义,代码可见HTML5规范的第882页。

从接口中可以看到,首先是定义的三个内置的事件处理程序:onopen/onmessage/onclose。此外还包括三个连接的状态readyState,CONNECTING表示正在建立连接,可能的情况是连接还没建立好或者连接中断客户端正在重连这个过程;OPEN表示连接开启可以传送数据的状态,CLOSED表示连接中断,并且客户端没有尝试重连。其中定义的方法我们可以看到只有close(),用来关闭连接。

以上是HTML5中MessageEvent以及SSE的规范的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

HTML 中的表格边框 HTML 中的表格边框 Sep 04, 2024 pm 04:49 PM

HTML 表格边框指南。在这里,我们以 HTML 中的表格边框为例,讨论定义表格边框的多种方法。

HTML 左边距 HTML 左边距 Sep 04, 2024 pm 04:48 PM

HTML 左边距指南。在这里,我们讨论 HTML margin-left 的简要概述及其示例及其代码实现。

HTML 中的嵌套表 HTML 中的嵌套表 Sep 04, 2024 pm 04:49 PM

这是 HTML 中嵌套表的指南。这里我们讨论如何在表中创建表以及相应的示例。

HTML 表格布局 HTML 表格布局 Sep 04, 2024 pm 04:54 PM

HTML 表格布局指南。在这里,我们详细讨论 HTML 表格布局的值以及示例和输出。

HTML 输入占位符 HTML 输入占位符 Sep 04, 2024 pm 04:54 PM

HTML 输入占位符指南。在这里,我们讨论 HTML 输入占位符的示例以及代码和输出。

在 HTML 中移动文本 在 HTML 中移动文本 Sep 04, 2024 pm 04:45 PM

HTML 中的文本移动指南。在这里我们讨论一下marquee标签如何使用语法和实现示例。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在这里我们还分别讨论了 HTML 有序列表和类型的介绍以及它们的示例

HTML onclick 按钮 HTML onclick 按钮 Sep 04, 2024 pm 04:49 PM

HTML onclick 按钮指南。这里我们分别讨论它们的介绍、工作原理、示例以及各个事件中的onclick事件。

See all articles