WebSocket.send()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

WebSocket.send() 方法将需要通过 WebSocket 链接传输至服务器的数据排入队列,并根据所需要传输的 data bytes 的大小来增加 bufferedAmount的值。若数据无法传输(例如数据需要缓存而缓冲区已满)时,套接字会自行关闭。

语法

WebSocket.send("Hello server!");

参数

data

用于传输至服务器的数据。它必须是以下类型之一:

USVString

文本字符串。字符串将以 UTF-8 格式添加到缓冲区,并且 bufferedAmount 将加上该字符串以 UTF-8 格式编码时的字节数的值。

ArrayBuffer

你可以使用类型化数组对象发送底层二进制数据;其二进制数据内存将被缓存于缓冲区,bufferedAmount 将加上所需字节数的值。

Blob

Blob 类型将队列 blob 中的原始数据以二进制中传输。 bufferedAmount 将加上原始数据的字节数的值。

ArrayBufferView

你可以以二进制帧的形式发送任何 JavaScript 类数组对象 ;其二进制数据内容将被队列于缓冲区中。值 bufferedAmount 将加上必要字节数的值。

异常

INVALID_STATE_ERR

当前连接未处于 OPEN 状态。

SYNTAX_ERR

数据是一个包含未配对代理 (unpaired surrogates) 的字符串。

备注: Gecko 在 Gecko 6.0 中对 send() 方法的实现与规范有些不一致;Gecko 返回一个 boolean 来告知当前连接是否依旧处于 OPEN 状态(同时也可以使用该返回值来判定数据是否已经被完全缓存或者传输);这个问题在 Gecko 8.0 中被修正。

而 Gecko 11.0, 支持 ArrayBuffer 类型但不支持 Blob类型。

规范

Specification
WebSockets Standard
# ref-for-dom-websocket-send①

浏览器兼容性

BCD tables only load in the browser