HTML5 WebSocket

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 连接就建立起来了,上方就可以通过这个连接通道自由的传送信息,并且连接会持续存在知道客户端或者服务端的某一方主动关闭连接。
原文地址:https://www.cnblogs.com/jcjc/p/12883276.html