WebSocket
对象提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的 API。
使用WebSocket()
构造函数来构造一个 WebSocket
。
WebSocket(url[, protocols\])
返回一个 WebSocket
对象。Constant | Value |
---|---|
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 的绝对路径。使用 addEventListener()
或将一个事件监听器赋值给本接口的 oneventname
属性,来监听下面的事件。
close
当一个 WebSocket
连接被关闭时触发。 也可以通过 onclose
属性来设置。error
当一个 WebSocket
连接因错误而关闭时触发,例如无法发送数据时。 也可以通过 onerror
属性来设置。message
当通过 WebSocket
收到数据时触发。 也可以通过 onmessage
属性来设置。open
当一个 WebSocket
连接成功时触发。 也可以通过 `onopen` 属性来设置。// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080');
// Connection opened
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
});
// Listen for messages
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
WebSocket()
构造函数返回一个 WebSocket
对象 .
var aWebSocket = new WebSocket(url [, protocols]);
url
要连接的 URL;这应该是 WebSocket 服务器将响应的 URL。protocols
(可选) 一个协议字符串或者一个包含协议字符串的数组。这些字符串用于指定子协议,这样单个服务器可以实现多个 WebSocket 子协议(例如,您可能希望一台服务器能够根据指定的协议(protocol
)处理不同类型的交互)。如果不指定协议字符串,则假定为空字符串。SECURITY_ERR
正在尝试连接的端口被阻止。webSocket.binaryType
var binaryType = aWebSocket.binaryType;
一条DOMString
:
"blob"
如果传输的是 Blob 类型的数据。"arraybuffer"
如果传输的是 ArrayBuffer 类型的数据。WebSocket.bufferedAmount
是一个只读属性,用于返回已经被send()
方法放入队列中但还没有被发送到网络中的数据的字节数。一旦队列中的所有数据被发送至网络,则该属性值将被重置为 0。但是,若在发送过程中连接被关闭,则属性值不会重置为 0。如果你不断地调用send()
,则该属性值会持续增长。
var bufferedAmount = aWebSocket.bufferedAmount;
一个无符号的长字符串。
**WebSocket.extensions
**是只读属性,返回服务器已选择的扩展值。目前,链接可以协定的扩展值只有空字符串或者一个扩展列表。
var extensions = aWebSocket.extensions;
一个 dom 字符串
WebSocket.protocol
是个只读属性,用于返回服务器端选中的子协议的名字;这是一个在创建 WebSocket 对象时,在参数 protocols
中指定的字符串,当没有已建立的链接时为空串。
var protocol = aWebSocket.protocol;
一个 dom 字符串
返回当前 WebSocket
的链接状态,只读。
var readyState = WebSocket.readyState;
以下其中之一
WebSocket.CONNECTING
) 正在链接中WebSocket.OPEN
) 已经链接并且可以通讯WebSocket.CLOSING
) 连接正在关闭WebSocket.CLOSED
) 连接已关闭或者没有链接成功**WebSocket.url
**是一个只读属性,返回值为当构造函数创建WebSocket实例对象时 URL 的绝对路径。
var url = WebSocket.url;
WebSocket.close()
方法关闭 WebSocket 连接或连接尝试(如果有的话)。如果连接已经关闭,则此方法不执行任何操作。
WebSocket.close();
WebSocket.send()
方法将需要通过 WebSocket 链接传输至服务器的数据排入队列,并根据所需要传输的 data bytes 的大小来增加 bufferedAmount
的值。若数据无法传输(例如数据需要缓存而缓冲区已满)时,套接字会自行关闭。
WebSocket.send("Hello server!");
bufferedAmount
将加上必要字节数的值。WebSocket.onclose
属性返回一个事件监听器,这个事件监听器将在 WebSocket 连接的readyState 变为 CLOSED
时被调用,它接收一个名字为“close”的 CloseEvent 事件。
WebSocket.onclose = function(event) {
console.log("WebSocket is closed now.");
};
当websocket
的连接由于一些错误事件的发生 (例如无法发送一些数据) 而被关闭时,一个error
事件将被引发。
Bubbles | No |
---|---|
Cancelable | No |
Interface | Event |
Event handler property | onerror |
// Create WebSocket connection
// 创建一个 WebSocket 连接
const socket = new WebSocket('ws://localhost:8080');
// Listen for possible errors
// 监听可能发生的错误
socket.addEventListener('error', function (event) {
console.log('WebSocket error: ', event);
});
message
事件会在 WebSocket
接收到新消息时被触发。
起泡(Bubbles) | 不 |
---|---|
可取消 | 不 |
接口 | MessageEvent |
事件处理程序属性 | onmessage |
// 创建一个 WebSocket 连接
const socket = new WebSocket('ws://localhost:8080');
// 监听消息
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
**WebSocket.onopen
**属性定义一个事件处理程序,当WebSocket 的连接状态readyState 变为1时调用;这意味着当前连接已经准备好发送和接受数据。这个事件处理程序通过 事件
(建立连接时)触发。
aWebSocket.onopen = function(event) {
console.log("WebSocket is open now.");
};