websocket和http的区别

WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。

websocket 通信过程

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

WebSocket 的其他特点:

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

在WebSocket之前,要实现实时拿到服务端的数据有两种方式:

ajax轮询

ajax轮询的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。

long poll

long poll 其实原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型(一直打电话,没收到就不挂电话),也就是说,客户端发起请求后,如果没消息,就一直不返回 Response 给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。

websockets 相对于 http 的优点
主动性:可以主动由服务端发数据到客户端,而http 方式只有客户端有请求,服务端才会响应返回节约资源:http 方式轮询 非常消耗资源,HTTP请求与回复可能会包含较长的头部,而websockets 只需要经过一次 HTTP 请求,就可以做到源源不断的信息传送了websocket 常见应用
聊天功能协同办公软件

websocket和http的区别