在介绍websocket之前,首先了解http请求和socket请求。
http请求的过程:客户端主动发起一个请求给服务端,服务端根据这个请求进行处理,最后返回一个响应。前提是client必须主动发起一个请求,服务端才能发起响应。http请求非常依赖客户端的主动性,若没有客户端请求,服务端是不能进行主动推送的。
socket通常意义是指tcp socket,也是有一个客户端一个服务端,不过二者是一开始就建立一个长连接通道,此时双方可以比较随意的发送请求/接收响应。服务端能主动发送响应!
在过去,我们一般用的是http的方式,但有时候又需要socket的功能。所以在HTML5之后,websocket应运而生。
websocket应用的场景:如服务端的状态变更,需要立即通知到客户端的实时性产品。过去实现实时性的方式是客户端轮询,即每一段时间或者每秒钟请求一次服务端,看数据有无变化。没变化不返回东西,发生变化则服务器会返回数据给客户端。客户端发现数据变动再更新页面,以这种每秒请求的方式达到信息的这种实时性,如果每秒请求的话那此时它最大延时约在1s左右。
有了websocket之后,就不用再轮询了。因为这种每秒请求的方式很消耗带宽,直接使用服务端推送的websocket方式有更好的实时性。通常这个功能被大量应用在网页聊天室,或者股票等状态信息变化频繁的应用上。