WebSocket 是一种双向通信协议,在建立连接后,WebSocket 服务器和 browser/ClIEnt Agent 都能主动的向对方发送或接收数据,就像 Socket 一样;
WebSocket 需要类似 TCP 的客户端和服务器端通过握手连接,连接成功后才能相互通信。
目的:即时通讯,替代轮询
连接过程 —— 握手过程
浏览器、服务器建立TCP连接,三次握手。这是通信的基础,传输控制层,若失败后续都不执行。 TCP连接成功后,浏览器通过http协议向服务器传送WebSocket支持的版本号等信息。(开始前的http握手) 服务器收到客户端的握手请求后,同样采用http协议回馈数据。 当收到了连接成功的消息后,通过TCP通道进行传输通信。WebSocket 机制
非 WebSocket 模式传统 http 客户端与服务器的交互如下图所示:
图 1. 传统 http 请求响应客户端服务器交互图
使用 WebSocket 模式客户端与服务器的交互如下图:
图 2.WebSocket 请求响应客户端服务器交互图
相对于传统 http 每次请求-应答都需要客户端与服务端建立连接的模式,WebSocket 是类似 Socket 的 TCP 长连接的通讯模式,一旦 WebSocket 连接建立后,后续数据都以帧序列的形式传输。在客户端断开 WebSocket 连接或 Server 端断掉连接前,不需要客户端和服务端重新发起连接请求。
在海量并发及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实时性优势明显。
WebSocket能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 http 一样通过 TCP 来传输数据。
WebSocket和 http 最大不同是:
http协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。这样的方法最明显的缺点就是需要不断的发送请求,而且通常http request的header是非常长的,为了传输一个很小的数据 需要付出巨大的代价,是很不合算的,占用了很多的宽带。会导致过多不必要的请求,浪费流量和服务器资源,每一次请求、应答,都浪费了一定流量在相同的头部信息上
然而WebSocket的出现可以弥补这一缺点。在WebSocket中,只需要服务器和浏览器通过http协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。
不同点
WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。http是单向的。 WebSocket是需要握手进行建立连接的。相同点
都是一样基于TCP的,都是可靠性传输协议。 都是应用层协议。WebSocket同http一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。
联系
WebSocket在建立握手时,数据是通过http传输的。但是建立之后,在真正传输时候是不需要http协议的。
总结以上是内存溢出为你收集整理的WebSocket介绍与原理全部内容,希望文章能够帮你解决WebSocket介绍与原理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)