CloseEvent - 表示 WebSockets 的连接关闭事件
CloseEvent
表示 WebSockets 的连接关闭事件。当连接关闭时,WebSockets 将 CloseEvent
发送给客户端。这被传递给由 WebSocket
对象的 onclose
属性指示的侦听器。
构造函数
CloseEvent()
创建一个新的 CloseEvent
。
属性
此接口还从其父接口 Event
继承了属性。
CloseEvent.code
只读
返回一个 unsigned short
,其中包含服务器发送的关闭代码。以下值是允许的状态代码。以下定义来自 IANA 网站[参考]。请注意,1xxx 代码仅是 WebSocket 内部的,对于传输的数据而言含义并不相同(例如,应用程序层协议无效时)。在 Firefox 中只能指定 1000 和 3000 至 4999 [来源,Bug]。
状态码 | 名称 | 描述 |
---|---|---|
0 –999 |
- | 保留且未使用。 |
1000 |
正常关闭 | 正常关闭;无论创建连接的目的是什么,它都成功地完成了。 |
1001 |
消失 | 由于服务器故障或浏览器离开打开连接的页面,导致端点消失。 |
1002 |
协议错误 | 由于协议错误,端点正在终止连接。 |
1003 |
不支持的数据 | 由于终结点接收到了它不能接受的类型的数据(例如,纯文本终结点接收到了二进制数据),因此连接正在终止。 |
1004 |
- | 保留。 将来可能会定义。 |
1005 |
没有收到状态 | 保留。 表示即使期望提供一个状态代码,但是没有提供。 |
1006 |
异常关闭 | 保留。 表示当期望状态码时,连接异常关闭(即没有发送关闭帧)。 |
1007 |
无效的载荷数据帧 | 端点正在终止连接,因为收到的消息包含不一致的数据(例如,文本消息中的非 UTF-8 数据)。 |
1008 |
违反策略 | 端点正在终止连接,因为它收到了一条违反其策略的消息。这是通用状态代码,在代码 1003 和 1009 不适用时使用。 |
1009 |
消息太大 | 端点正在终止连接,因为接收到的数据帧太大。 |
1010 |
缺少扩展名 | 客户端正在终止连接,因为它希望服务器协商一个或多个扩展,但是服务器没有。 |
1011 |
内部错误 | 服务器正在终止连接,因为它遇到了意外情况,阻止了它满足请求。 |
1012 |
服务重启 | 服务器正在重新启动,因此正在终止连接。[参考] |
1013 |
稍后再试 | 服务器由于暂时状况而终止连接,例如,服务器超载并且正在抛弃某些客户端。[参考] |
1014 |
错误的网关 | 该服务器充当网关或代理,并从上游服务器收到无效响应。这类似于 502 HTTP 状态代码。 |
1015 |
TLS 握手 | 保留。 表示由于执行 TLS 握手失败(例如,无法验证服务器证书)而关闭了连接。 |
1016 –1999 |
- | 保留供 WebSocket 标准将来使用。 |
2000 –2999 |
- | 保留供 WebSocket 扩展使用。 |
3000 –3999 |
- | 可供库和框架使用。 可能不会被应用程序使用。可通过先到先得的方式在 IANA 上进行注册。 |
4000 –4999 |
- | 可供应用程序使用。 |
CloseEvent.reason
只读
返回一个 DOMString
,表示服务器关闭连接的原因。它由服务器和子协议自行提供。
CloseEvent.wasClean
只读
返回一个 Boolean
,它表示是否干净地关闭了连接。
方法
该接口还继承自其接口 Event
的方法。
CloseEvent.initCloseEvent()
初始化创建的 CloseEvent
的值。如果事件已被调度,则此方法不执行任何操作。不应再使用此方法,而应使用 CloseEvent()
构造函数。
规范
规范 | 状态 | 备注 |
---|---|---|
HTML Living Standard CloseEvent 的定义 |
现行的标准 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 13 | 12 | 812 | 10 | 12.1 | 6 |
CloseEvent() 构造函数 | 未知 | 未知 | 8 | 未知 | 未知 | 未知 |
initCloseEvent | 不支持 | 12 — 79 | 8 — 41 | 不支持 | 不支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | ≤37 | 18 | 未知 | 8 | 未知 | 12.1 | 6 |
CloseEvent() 构造函数 | 未知 | 未知 | 未知 | 8 | 未知 | 未知 | 未知 |
initCloseEvent | 不支持 | 不支持 | 未知 | 8 — 41 | 未知 | 不支持 | 不支持 |
1. 在 Firefox 12 之前的版本中,由于意外错误或未指定的错误情况而关闭了通道时,使用了关闭代码 CLOSE_NORMAL
。
2. 在 Firefox 8 之前,WebSocket
关闭事件是作为简单事件发送给侦听器的。