开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情
本次我们学习WebSocket,HTML5规范的新特性,这是不同于HTTP协议的。
WebSocket的引入:
HTTP协议下传统的请求-响应模式的Web应用在处理此类业务场景时,通常采用轮询的方式,即客户端通过一定的时间间隔以频繁请求的方式向服务器发送请求,保持客户端和服务器端的数据同步。这种解决方式的缺点很明显,当客户端以固定频率向服务器端发送请求时,服务器端的数据可能并没有更新,带来很多无谓请求,既浪费带宽,又给服务器带来巨大的负荷。因此,开发人员需要一种高效节能的双向通信机制保证数据的实时传输。
在Web应用飞速普及的同时,Web应用相关的规范也在不断进化,其中最具代表性、影响力最大的是HTML5规范。2007年W3C(万维网联盟)立项HTML5规范小组,致力于解决原有的HTML标记语言在多媒体支持、实时交互方面的限制问题。2014年10月底,HTML5规范正式发布。作为下一代的Web标准,HTML5拥有许多引人注目的新特性,如Canvas、本地存储、多媒体编程接口、WebSocket等。其中最吸引开发人员的还是WebSocket协议。它是HTML5开始提供的一种在单个TCP连接上进行全双工通信协议。在WebSocket协议下,浏览器和服务器只需要做一个握手的动作,浏览器和服务器之间就形成了一条快速通道,两者之间就直接可以互相传送数据。开发人员可以非常方便地使用WebSocket构建实时Web应用。
WebSocket的工作机制
WebSocket是HTML5规范中一种新的协议。它实现了浏览器与服务器全双工通信,能更好地节省服务器资源和带宽,并实现实时通信。与HTTP协议一样,WebSocket也属于应用层协议,它建立在TCP之上,通过TCP传输数据。
与HTTP协议的区别
WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和浏览器/客户端代理都能主动向对方发送或接收数据,就像Socket一样;
WebSocket像TCP一样,需要客户端和服务器端通过握手连接,连接成功后才能相互通信。
相比传统HTTP每次请求-应答都需要客户端与服务端建立连接的模式,WebSocket采用类似Socket的TCP长连接的通信模式,一旦WebSocket连接建立后,后续数据都以帧序列的形式传输。在客户端断开WebSocket连接或Server端断掉连接前,不需要客户端和服务端重新发起连接请求。在海量并发及客户端与服务器交互负载流量大的情况下,极大地节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接收消息是在同一个持久连接上发起,实时性优势明显。
以上内容就是关于WebSocket的学习,我们先从概念入手,学习了WebSocket的引入,工作机制以及与HTTP协议的区别。