websocket初识|青训营笔记

104 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第6天

websocket

  • WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)
  • 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的
  • Websocket是一个持久化的协议

使用websocket可以在服务器与客户端之间建立一个非HTTP的双向连接,这个连接是实时的也是永久的,除非被显式关闭。服务器可以随时将消息推送到客户端。

它是一个新的基于TCP的的应用层协议,只需要一次连接,以后的数据不需要重新建立连接,可以直接发送,它是基于TCP的,属于和HTTP相同的地位。

它的最大特点就是,服务器可以主动向客户端推送消息,客户端也可以主动向服务器发送消息,是真正的双向平等对话, 属于服务器推送技术的一种。

Websocket的特点

建立在TCP协议上,服务器端的实现比较容易 与HTTP协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用HTTP协议,因此握手时不容易屏蔽,能通过各种HTTP代理服务器。 数据格式比较轻量,性能开销小,通信高效。 可以发送文本,也可以发送二进制数据。 没有同源限制,客户端可以与任意服务器通信。 协议标识符是ws(如果加密,则为wss),服务器网址就是URL.

websocket与http的关系

image.png

相同点:

相同点不同点
都是基于tcp的,都是可靠性传输协议WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息
都是应用层协议HTTP是单向的
WebSocket是需要浏览器和服务器握手进行建立连接的
而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接

WebSocket连接过程

客户端发起HTTP握手,告诉服务器端进行WebSocket协议通讯,并告知WebSocket协议版本。服务器端确认协议版本,升级为WebSocket协议。之后如果有数据需要推送,会主动推送给客户端。

连接开始时,客户端使用HTTP协议和服务器端升级协议,升级完成后,后续数据交换遵循WebSocket协议。

返回实例对象的属性

  • WebSocket.onopen: 连接成功后的回调

  • WebSocket.onclose: 连接关闭后的回调

  • WebSocket.onerror: 连接失败后的回调

  • WebSocket.onmessage: 客户端接收到服务端数据的回调

  • webSocket.bufferedAmount: 未发送至服务器的二进制字节数

  • WebSocket.binaryType: 使用二进制的数据类型连接

  • WebSocket.protocol : 服务器选择的下属协议

  • WebSocket.url : WebSocket 的绝对路径

  • WebSocket.readyState: 当前连接状态,对应的四个常量

  • WebSocket.close() 关闭当前连接

  • WebSocket.send(data) 向服务器发送数据