最近更新时间:2024-01-02 14:51:09
WebSocket 是HTML5下的一种标准协议,用于在客户端和服务端之间进行双向数据传输(本质是基于 TCP 的协议)。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。
虽然在建立握手时,数据是通过HTTP传输的,但握手建立之后,WebSocket基于已经建立的TCP连接,客户端和服务端可以进行双向数据传输,都能主动向对方发送或接收信息。
Websocket和HTTP的关系:
相同点:
两种协议都是基于TCP的可靠传输协议
两种都是应用层协议
不同点:
Websocket是双向通信协议,服务端可以主动向服务端发送信息,不依赖客户端的请求
HTTP是单向的,只有收到客户端请求后,服务端才向客户端发送信息
Websocket是需要客户端和服务端握手建立连接,握手成功后,可实现客户端和服务端的双向通信
HTTP是客户端向服务端发起的连接,服务端事先不感知,只能是单向通信
WebSocket Secure
HTTP虽然可以实现客户端和服务端的信息传递,满足大多数场景的需求,但HTTP是一种单向通信协议,服务器每一次的数据传输,都需要有客户端HTTP请求。随着信息技术的发展,在一些重要的应用场景中,需要服务端有能力主动对客户端进行信息的实时推送(例如直播弹幕、在线聊天、协同办公等),如果依靠HTTP协议,客户端想要获取服务端的最新信息,需要通过轮询的方式不断发起HTTP请求,而HTTP的请求报文中,可能大部分报文长度由头部占用,有效数据并不多。由此带来了两个问题,一是通信效率低下;二是对带宽资源的侵占,造成浪费。
根据业务场景的不同,可以选择WebSocket协议,它实现了客户端和服务端的全双工通信,具备以下优势:
实时性高,服务端有更新时,可以主动将信息发送给客户端
因为减少了HTTP协议由客户端发起的轮询请求,服务的带宽开销减少,实现降本增效。
HTTP监听器默认支持Websocket,不需要特殊配置。
HTTPS监听器默认支持Websocket Secure,不需要特殊配置。
目前在ALB开放的区域都已支持WebSocket和Websocket Secure。
金山云不针对WebSocket和Websocket Secure收取额外费用。
纯净模式
鼠标选中内容,快速反馈问题