WebSocket与Http的区别?

WebSocket 建立连接后,是可以互相主动通信的。相对于传统 HTTP 每次请求-应答都需要客户端与服务端建立连接的模式,WebSocket 是类似 TCP 长连接的通讯模式,一旦 WebSocket 连接建立后,后续数据都以帧序列的形式传输。在客户端断开 WebSocket 连接或 Server 端断掉连接前,不需要客户端和服务端重新发起连接请求。在海量并发及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实时性优势明显。
总结:

  • HTTP 是一种单向的请求应答模式的短链接
  • WebSocket 是一种双向的类似与 TCP 长连接的通信模式,建立连接后客户端和服务器可以相互主动通信,在客户端或者服务器断掉连接前,客户端不需要重新发起连接请求,有明显的性能优势,客户端发送和接受消息都是在一个持久连接上,实时优势明显。

http长连接和websocket的区别

Keep-alive的确可以实现长连接,但本质上依然是客户端主动发起-服务端应答的模式,是没法做到服务端主动发送通知给客户端,是省略了每次的关闭和打开操作。

  • WebSocket 是基于TCP 的独立协议。
  • 出于兼容性考虑,WS 的握手使用Http来实现的,客户端的握手消息就是一个「普通的,带有Upgrade头的,HTTP Request消息」