WebSocket

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

* 此特性的某些部分可能存在不同级别的支持。

注意:此功能在 Web Workers 中可用。

WebSocket 对象提供了创建和管理到服务器的 WebSocket 连接以及在连接上传输和接收数据的 API。

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

注意: WebSocket API 没有应用 背压 的方法。因此,当消息到达速度快于应用程序处理速度时,应用程序将通过缓冲这些消息而耗尽设备的内存,或者由于 CPU 使用率达到 100% 而变得无响应,或者两者兼而有之。对于自动提供背压的替代方案,请参阅 WebSocketStream

EventTarget WebSocket

构造函数

WebSocket()

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

实例属性

WebSocket.binaryType

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

WebSocket.bufferedAmount 只读

已排队数据的字节数。

WebSocket.extensions 只读

服务器选择的扩展。

WebSocket.protocol 只读

服务器选择的子协议。

WebSocket.readyState 只读

连接的当前状态。

WebSocket.url 只读

WebSocket 的绝对 URL。

实例方法

WebSocket.close()

关闭连接。

WebSocket.send()

将数据加入队列以进行传输。

事件

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

close

当与 WebSocket 的连接关闭时触发。也可通过 onclose 属性访问。

error

当与 WebSocket 的连接因错误而关闭时触发,例如发送某些数据失败。也可通过 onerror 属性访问。

message

通过 WebSocket 接收到数据时触发。也可通过 onmessage 属性访问。

open

WebSocket 的连接打开时触发。也可通过 onopen 属性访问。

示例

js
// Create WebSocket connection.
const socket = new WebSocket("ws://:8080");

// Connection opened
socket.addEventListener("open", (event) => {
  socket.send("Hello Server!");
});

// Listen for messages
socket.addEventListener("message", (event) => {
  console.log("Message from server ", event.data);
});

规范

规范
WebSocket
# the-websocket-interface

浏览器兼容性

另见