WebSocket - 提供了用于创建和管理与服务器的 WebSocket 连接的 API

WebSocket 对象提供了用于创建和管理与服务器的 WebSocket 连接以及用于在该连接上发送和接收数据的 API。

要构造 WebSocket,请使用 WebSocket() 构造函数。

构造函数

WebSocket(url[, protocols])

返回一个新创建的 WebSocket 对象。

常量

常量
WebSocket.CONNECTING 0
WebSocket.OPEN 1
WebSocket.CLOSING 2
WebSocket.CLOSED 3

属性

WebSocket.binaryType

连接使用的二进制数据类型。

WebSocket.bufferedAmount 只读

排队数据的字节数。

WebSocket.extensions 只读

服务器选择的扩展名。

WebSocket.onclose

连接关闭时要调用的事件监听器。

WebSocket.onerror

发生错误时要调用的事件监听器。

WebSocket.onmessage

从服务器收到消息时要调用的事件监听器。

WebSocket.onopen

打开连接时要调用的事件监听器。

WebSocket.protocol 只读

服务器选择的子协议。

WebSocket.readyState 只读

连接的当前状态。

WebSocket.url 只读

WebSocket 的绝对 URL。

方法

WebSocket.close([code[, reason]])

关闭连接。

WebSocket.send(data)

使要发送的数据入队。

事件

使用 addEventListener() 或通过为 oneventname 属性分配事件监听器来监听这个接口的事件。

close

当与 WebSocket 的连接关闭时触发。也可以通过 onclose 属性处理。

error

当由于错误而关闭与 WebSocket 的连接时触发,例如无法发送某些数据时触发。也可以通过 onerror 属性处理。

message

通过 WebSocket 接收数据时触发。也可以通过 onmessage 属性处理。

open

当打开与 WebSocket 的连接时触发。也可以通过 onopen 属性处理。

实例

// 创建 WebSocket 连接。
const socket = new WebSocket('ws://localhost:8080');

// 连接已打开
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});

// 监听消息
socket.addEventListener('message', function (event) {
    console.log('Message from server ', event.data);
});

规范

规范 状态
HTML Living Standard
WebSocket 的定义
现行的标准

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 支持12

111

7 — 11 Moz 2

4 — 62

支持 支持 支持
WebSocket() 构造函数 支持≤79

7

4 — 73

未知 支持 未知
binaryType 支持12 支持 未知 支持 支持
bufferedAmount 支持12 支持 未知 支持 支持
close 支持12

8

4 — 84

未知 支持 支持
close 事件 支持12 支持 未知 支持 未知
error 事件 支持12 支持 未知 支持 未知
extensions 支持128 未知 支持 支持
message 事件 支持12 支持 未知 支持 未知
onclose 支持12 支持 未知 支持 支持
onerror 支持12 支持 未知 支持 支持
onmessage 支持12 支持 未知 支持 支持
onopen 支持12 支持 未知 支持 支持
open 事件 支持12 支持 未知 支持 未知
protocol 支持12 支持 未知 支持 支持
Supports protocol as specified by RFC 645516121110156
readyState 支持12 支持 未知 支持 支持
send 支持12

185

11 — 186

8 — 117

4 — 88

未知 支持 支持
url 支持12 支持 未知 支持 支持
在 Worker 中可用 支持≤1837 未知 未知 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持 支持 未知

141

7 — 14 Moz 2

未知 支持 支持
WebSocket() 构造函数 支持 支持 未知7 未知 未知 未知
binaryType 支持 支持 未知 支持 未知 支持 支持
bufferedAmount 支持 支持 未知 支持 未知 支持 支持
close 支持 支持 未知 支持 未知 支持 支持
close 事件 支持 支持 未知 支持 未知 未知 未知
error 事件 支持 支持 未知 支持 未知 未知 未知
extensions 支持 支持 未知8 未知 支持 支持
message 事件 支持 支持 未知 支持 未知 未知 未知
onclose 支持 支持 未知 支持 未知 支持 支持
onerror 支持 支持 未知 支持 未知 支持 支持
onmessage 支持 支持 未知 支持 未知 支持 支持
onopen 支持 支持 未知 支持 未知 支持 支持
open 事件 支持 支持 未知 支持 未知 未知 未知
protocol 支持 支持 未知 支持 未知 支持 支持
Supports protocol as specified by RFC 6455 支持18 未知14 未知146
readyState 支持 支持 未知 支持 未知 支持 支持
send 支持 支持 未知 支持 未知 支持 支持
url 支持 支持 未知 支持 未知 支持 支持
在 Worker 中可用 支持 支持 未知37 未知 未知 未知

1. 请参阅 bug 695635

2. 消息大小限制为 16 MB(请参阅 bug 711205)。

3. 不支持 protocols 参数。

4. 不支持参数,请参见 bug 674716

5. 请参阅 bug 775368

6. 仅支持 ArrayBufferString 类型的参数。

7. 仅支持 String 类型的参数。

8. 仅支持 String 类型的参数。返回 boolean

相关链接