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 的定义 |
现行的标准 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 12 | 111 4 — 62 | 支持 | 支持 | 支持 |
WebSocket() 构造函数 | 支持 | ≤79 | 7 4 — 73 | 未知 | 支持 | 未知 |
binaryType | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
bufferedAmount | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
close | 支持 | 12 | 8 4 — 84 | 未知 | 支持 | 支持 |
close 事件 | 支持 | 12 | 支持 | 未知 | 支持 | 未知 |
error 事件 | 支持 | 12 | 支持 | 未知 | 支持 | 未知 |
extensions | 支持 | 12 | 8 | 未知 | 支持 | 支持 |
message 事件 | 支持 | 12 | 支持 | 未知 | 支持 | 未知 |
onclose | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
onerror | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
onmessage | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
onopen | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
open 事件 | 支持 | 12 | 支持 | 未知 | 支持 | 未知 |
protocol | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
Supports protocol as specified by RFC 6455 | 16 | 12 | 11 | 10 | 15 | 6 |
readyState | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
send | 支持 | 12 | 185 11 — 186 8 — 117 4 — 88 | 未知 | 支持 | 支持 |
url | 支持 | 12 | 支持 | 未知 | 支持 | 支持 |
在 Worker 中可用 | 支持 | ≤18 | 37 | 未知 | 未知 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 141 | 未知 | 支持 | 支持 |
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 | 未知 | 14 | 6 |
readyState | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
send | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
url | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
在 Worker 中可用 | 支持 | 支持 | 未知 | 37 | 未知 | 未知 | 未知 |
1. 请参阅 bug 695635。
2. 消息大小限制为 16 MB(请参阅 bug 711205)。
3. 不支持 protocols
参数。
4. 不支持参数,请参见 bug 674716。
5. 请参阅 bug 775368。
6. 仅支持 ArrayBuffer
和 String
类型的参数。
7. 仅支持 String
类型的参数。
8. 仅支持 String
类型的参数。返回 boolean
。