此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

WebSocket

基线 广泛可用 *

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

* 此特性的某些部分的支持程度可能有所不同。

备注: 此特性在 Web Worker 中可用。

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

使用 WebSocket() 构造函数来构造 WebSocket

备注:WebSocket API 无法应用背压,因此当消息到达速度超过应用程序的处理速度时,应用程序要么因缓冲这些消息而耗尽设备内存,要么因 100% CPU 使用率而变得无响应,甚至可能同时出现这两种情况。如需一种能提供自动背压的替代方案,请参见 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
// 创建 WebSocket 连接。
const socket = new WebSocket("ws://localhost:8080");

// 连接打开
socket.addEventListener("open", (event) => {
  socket.send("你好,服务器!");
});

// 监听消息
socket.addEventListener("message", (event) => {
  console.log("来自服务器的消息:", event.data);
});

规范

规范
WebSockets
# the-websocket-interface

浏览器兼容性

参见