CloseEvent - 表示 WebSockets 的连接关闭事件

CloseEvent 表示 WebSockets 的连接关闭事件。当连接关闭时,WebSocketsCloseEvent 发送给客户端。这被传递给由 WebSocket 对象的 onclose 属性指示的侦听器。

构造函数

CloseEvent()

创建一个新的 CloseEvent

属性

此接口还从其父接口 Event 继承了属性。

CloseEvent.code 只读

返回一个 unsigned short,其中包含服务器发送的关闭代码。以下值是允许的状态代码。以下定义来自 IANA 网站[参考]。请注意,1xxx 代码仅是 WebSocket 内部的,对于传输的数据而言含义并不相同(例如,应用程序层协议无效时)。在 Firefox 中只能指定 1000 和 3000 至 4999 [来源Bug]。

状态码 名称 描述
0999 - 保留且未使用。
1000 正常关闭 正常关闭;无论创建连接的目的是什么,它都成功地完成了。
1001 消失 由于服务器故障或浏览器离开打开连接的页面,导致端点消失。
1002 协议错误 由于协议错误,端点正在终止连接。
1003 不支持的数据 由于终结点接收到了它不能接受的类型的数据(例如,纯文本终结点接收到了二进制数据),因此连接正在终止。
1004 - 保留。 将来可能会定义。
1005 没有收到状态 保留。 表示即使期望提供一个状态代码,但是没有提供。
1006 异常关闭 保留。 表示当期望状态码时,连接异常关闭(即没有发送关闭帧)。
1007 无效的载荷数据帧 端点正在终止连接,因为收到的消息包含不一致的数据(例如,文本消息中的非 UTF-8 数据)。
1008 违反策略 端点正在终止连接,因为它收到了一条违反其策略的消息。这是通用状态代码,在代码 10031009 不适用时使用。
1009 消息太大 端点正在终止连接,因为接收到的数据帧太大。
1010 缺少扩展名 客户端正在终止连接,因为它希望服务器协商一个或多个扩展,但是服务器没有。
1011 内部错误 服务器正在终止连接,因为它遇到了意外情况,阻止了它满足请求。
1012 服务重启 服务器正在重新启动,因此正在终止连接。[参考]
1013 稍后再试 服务器由于暂时状况而终止连接,例如,服务器超载并且正在抛弃某些客户端。[参考]
1014 错误的网关 该服务器充当网关或代理,并从上游服务器收到无效响应。这类似于 502 HTTP 状态代码。
1015 TLS 握手 保留。 表示由于执行 TLS 握手失败(例如,无法验证服务器证书)而关闭了连接。
10161999 - 保留供 WebSocket 标准将来使用。
20002999 - 保留供 WebSocket 扩展使用。
30003999 - 可供库和框架使用。 可能不会被应用程序使用。可通过先到先得的方式在 IANA 上进行注册。
40004999 - 可供应用程序使用。

CloseEvent.reason 只读

返回一个 DOMString,表示服务器关闭连接的原因。它由服务器和子协议自行提供。

CloseEvent.wasClean 只读

返回一个 Boolean,它表示是否干净地关闭了连接。

方法

该接口还继承自其接口 Event 的方法。

CloseEvent.initCloseEvent()

初始化创建的 CloseEvent 的值。如果事件已被调度,则此方法不执行任何操作。不应再使用此方法,而应使用 CloseEvent() 构造函数。

规范

规范 状态 备注
HTML Living Standard
CloseEvent 的定义
现行的标准 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持13128121012.16
CloseEvent() 构造函数 未知 未知8 未知 未知 未知
initCloseEvent 不支持12 — 798 — 41 不支持 不支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持≤3718 未知8 未知12.16
CloseEvent() 构造函数 未知 未知 未知8 未知 未知 未知
initCloseEvent 不支持 不支持 未知8 — 41 未知 不支持 不支持

1. 在 Firefox 12 之前的版本中,由于意外错误或未指定的错误情况而关闭了通道时,使用了关闭代码 CLOSE_NORMAL

2. 在 Firefox 8 之前,WebSocket 关闭事件是作为简单事件发送给侦听器的。

相关链接