WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议
- 在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行全双工的数据传输
- 现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询,是在特定的时间间隔内(如每 1 秒),有浏览器向服务器发出 HTP 请求,然后由服务器返回最新的数据给客户端的浏览器,这种传统发的模式带来很明显的缺点,即浏览器需要不断的项度武器发出请求,然而 HTTP 请求可能包含较长的头部,其中真正的数据可能只是很小的一部分,显然这样会浪费很多的款等待资源。
- HTML5 定义的 WebSocket 协议,能更好的节省服务器资源宽带,并且能够实时的进行通讯。
WebSocket 的属性
- Socket.readyState
- 0 - 表示连接尚未建立
- 1 - 表示连接以建立,可以进行通信
- 2 - 表示连接正在进行关闭
- 3 - 表示连接已经关闭或者连接不能打开
- Socket.bufferedAmount
- 只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发现的 UTF-8 文本字节数
WebSocket 事件
- open
- Socket onopen
- 连接建立时触发
- message
- Socket onmessage
客户端接收服务端数据时触发
- error
Socket onerror
- 通信发生错误时触发
- close
- Socket onclose
- 连接关闭时触发
WebSocket 方法
- Socket.send()
- 使用连接发送数据
- Socket.close()
- 关闭连接
WebSocket 实例
- WebSocket 实质上是一个基于 TCP 的协议
- 为了建立一个Web Socket 连接,客户端浏览器首先需要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含一些附加的头信息,其中附加头信息“Upgrade: WebSocket” 表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务端的 WebSocket 连接就建立起来了,上方就可以通过这个连接通道自由的传送信息,并且连接会持续存在知道客户端或者服务端的某一方主动关闭连接。