先一句话说清楚:WebSocket 是什么?
WebSocket 是一种让浏览器和服务器之间建立“持久连接”的协议,双方都可以随时主动发消息,不再是像http协议那样客户端主动发请求,服务器被动回应 的形式。
下面说一下webSocket和http协议的连接方式:
HTTP的连接方式:是 短连接,也就是说我们每次发出的请求都是一个新的请求 它是无状态的 这个无状态也是http协议的核心特点之一
WebSocket它的连接是:它是先通过HTTP协议建立连接,然后将连接“升级”为一个持久连接。
我们用一个去银行办业务的例子对比一下,会更清楚:
普通HTTP类似于 我们每次办业务的时候,都要去普通窗口排队、填表、验证身份,然后工作人员给我们办完业务,我们离开以后,等以后每次来都是需要重复这些步骤才行
WebSocket:第一次排队填表进行验证后,银行就给了我们一个专用通道,之后我们可以随时走这个通道进行办理业务,银行也可以随时主动通知我们。
这里我们可以看出WebSocket:它是先通过HTTP协议建立连接,而不是直接去连接服务器,这是因为WebSocket自己是一个“新协议”,如果它直接用自己的规则、使用一个新端口去连接服务器,大概率会被拦截,这是因为防火墙只认HTTP的80端口和HTTPS的443端口,其他端口默认不让过。
所以WebSocket它先使用HTTP协议,通过80或443端口假装成一个普通HTTP请求混进去。等连接建立之后,它会再把协议“升级”成WebSocket,从此开始持久化的双向通信。
在我们的实际项目中用到 WebSocket,是因为我们希望商家端能够实时收到提醒,比如用户的“来单提醒”或“催单提醒”。
如果用传统的 HTTP 方式,就需要商家端不断主动去询问服务器“有没有新订单/有没有用户催单”,这样效率很低,还会给服务器造成很大的压力。
而 使用WebSocket就可以建立一条持久连接,当服务器在接收到有新订单或催单时,能够主动推送给商家端。




