WebSocket对象特性

一:WebSocket对象特性

可以使用多种WebSocket对象特性提供关于WebSocket对象的更多信息:readyState、bufferedAmount和protocol。

1. WebSocket对象特性:readyState

WebSocket对象通过只读特性readyState报告其连接状态,你在前面的几节中已经学到了一点相关的知识。这个属性根据连接状态自动变化,并提供关于WebSocket连接的有用信息。

表2-1描述了用于描述连接状态的readyState特性的4个不同值。

表2-1   readyState特性、取值和状态描述

WebSocket对象特性_第1张图片


信息来源:万维网联盟,2012年。

正如WebSocket API所描述的,当WebSocket对象第一次创建时,readyState为0,表示套接字正在连接。了解WebSocket连接的当前状态有助于应用程序的调试,例如,确保在尝试开始向服务器发送请求之前已经打开了WebSocket连接。这一信息对于了解连接的生命周期也很有用。

二WebSocket对象特性:bufferedAmount

设计应用程序时,你可能想要检查发往服务器的缓冲数据量,特别是在客户端应用程序向服务器发送大量数据的时候。尽管调用send()是立即生效的,但是数据在互联网上的传输却不是如此。浏览器将为你的客户端应用程序缓存出站数据,从而使你可以随时调用send(),发送任意数量的数据。然而,如果你想知道数据在网络上传送的速率,WebSocket对象可以告诉你缓存的大小。你可以使用bufferedAmount特性检查已经进入队列,但是尚未发送到服务器的字节数。这个特性报告的值不包括协议组帧开销或者操作系统、网络硬件所进行的缓冲。

代码清单2-17展示一个使用bufferedAmount特性每秒发送更新的例子。如果网络无法承受这一速率,它会相应地作出调整。

代码清单2-17   bufferedAmount示例

WebSocket对象特性_第2张图片

对于限制应用向服务器发送数据的速率,从而避免网络饱和,bufferedAmount特性很有用。

专家提示 你可以在试图关闭连接之前检查对象的bufferedAmount特性,确定是否有些数据还没有从应用中发送到服务器。

三 WebSocket对象特性:protocol

在前面关于WebSocket构造函数的讨论中,我们提到了protocol参数,它让服务器知道客户端理解并可在WebSocket上使用的协议。WebSocket对象的protocol特性提供了另一条关于WebSocket实例的有用信息。客户端和服务器协议协商的结果可以在WebSocket对象上看到。protocol特性包含在打开握手期间WebSocket服务器选择的协议名,换句话说,protocol特性告诉你特定WebSocket上使用的协议。protocol特性在最初的握手完成之前为空,如果服务器没有选择客户端提供的某个协议,该特性保持空值。
 

你可能感兴趣的:(websocket)