知乎上一个讲解的非常好:https://www.zhihu.com/question/20215561/answer/40316953
首先,WebSocket是一个HTML5出的协议;
为什么要出这个协议?
因为:
1.HTTP不是持久链接,每次链接都耗时
即HTTP是非状态,每次都要重新鉴别,告诉服务端你是谁,浪费了流量和时间
SO->出现websocket
websocket是持久化的协议,
它是基于http;首先借用了HTTP完成一部分握手,建立websocket,然后HTTP完成工作接下来全是websocket;
即websocket只要一次HTTP握手,就建立在一次连接状态中,直到关闭请求
2.解决服务端客户端联系问题
需要认识现有的long poll 、ajax轮询
ajax轮询,简单说是setinterval($ajax,t),t时间一个单位像服务器发出ajax请求
long poo,采用轮询方式,但是是阻塞模型,不返回res,就一直连接,直到res
以上两种方式都是不断建立HTTP,只能客户端发起,服务端不能主动联系,会浪费资源和时间
websocket解决的就是这个问题,只要一次HTTP请求,有了相应,服务端会主动联系客户端,传res