websocket是一种基于TCP的持久化全双工网络通信协议。
为什么需要websocket
websocket作为一种网络通信协议,使用于客户端和服务端的实时数据通信之中。通常情况下,基于HTTP协议,客户端向服务器发送http请求,服务器响应相应的数据。虽然基于http协议也能完成客户端与服务端的数据通信,但有以下不足之处:
1、在http协议下,客户端与服务器并未建立稳定的持久化的连接。这使得客户端在每次发送的http请求中,都需要身份状态验证信息。
2、数据通信是单向的,在某一时刻数据通信只能是客户端向服务器发送请求,服务器响应。这显然不适用于实时通信场景,因为服务器有状态的变化无法及时的通知客户端。(尽管有一些方式可以改进,如轮询、长轮询以及流化技术,但都存在占用资源、延时增加等问题)
注:以上分析是基于特定应用场景的,即实时数据通信。由于在这样的场景下HTTP变得不那么适合,从而提出了websocket。
websocket特点
websocket作为基于tcp协议通信协议,能够建立客户端与服务器端的持久化通信,并且支持双向数据通信。因此其部分特点为:
1、客户端与服务器端的稳定的持久化的通信;
2、双向数据通信;
3、可以发送文本,也可以发送二进制数据。
4、没有同源限制,客户端可以与任意服务器通信。
websocket通信的建立过程
初始阶段,客户端通过http协议,携带关于websocket的连接信息向服务器发送连接请求。
如果服务器支持websocket,那么将建立与客户端的websocket通信,此后客户端与服务器端通过websocket进行通信,否则连接建立失败。