WebSocket协议实时通信技术原理

WebSocket是一种基于TCP的持久化全双工通信协议,用于实现浏览器与服务器的实时通信,降低了服务器压力并保证数据实时传输。WebSocket通过发送连接请求、握手验证与服务器建立连接,数据以帧的形式传输,支持心跳检测。Spring框架自4.0起提供对WebSocket的支持,允许开发者方便地实现在Web应用中的实时通信功能。
摘要由CSDN通过智能技术生成

HTML5 WebSocket协议实时通讯机制

Ajax长轮询过程中,客户端通过频繁地向服务器发送HTTP请求的方式与服务器保持这一种虚拟的连接,此连接的方式属于循环连接而不属于长连接。

相对于HTTP协议这一非持久连接的特点来说,为避免HTTP轮询的滥用,2011年,由IETF(互联网工程任务组)制定并规范了WebSocket通信协议。

WebSocket通信协议是HTML5支持浏览器与服务器进行多路复用全双工(Full-Duplex)通信的技术,是一个持久化协议,允许服务器主动发送信息给客户端。客户端通过JavaScript实现相应的API与服务器建立WebSocket连接后,客户端发送的Request请求信息当中不再带有请求头Head的部分信息,与Ajax长轮询通信对比,WebSocket通讯,不仅能降低服务器的压力而且保证了数据的实时传输。

####WebSocket协议实时通信技术原理

最喜欢拆东西,解剖技术原理了。做事多问个为什么,凭什么要这样实现,这样做的作用是什么。

WebSocket协议是基于TCP协议并遵从HTTP协议的握手规范的一种通讯协议,其通过发送连接请求,握手,验证握手信息这三个步骤与服务器建立WebSocket连接。

这里写图片描述


  • 发送连接请求

客户端通过一个格式为:ws://host:port/的请求地址发起WebSocket连接请求,并由JavaScript实现WebSocket API与服务器建立WebSocket连接,其中host为服务器主机IP地址或域名,port为端口。为了让本客服系统能够在不同浏览器建立WebSocket连接,在发送连接请求前,需要开启SockJS的支持,创建一个全双工的信道。

WebSocket请求头信息:

这里写图片描述

相关字段说明:

字段名 说明
Connection:Upgrade 标识该HTTP请求是一个协议升级请求
Upgrade: WebSocket 协议升级为WebSocket协议
Sec-WebSocket-Version: 13 客户端支持WebSocket的版本
Sec-WebSocket-Key:jONIMu4nFOf0iwNnc2cihg== 客户端采用base64编码的24位随机字符序列。
Sec-WebSocket-Extensions 协议扩展类型

HTTP协议和WebSocket协议关系图:

这里写图片描述

可以看出WebSocket请求是HTTP协议进行升级的,即使请求格式为ws://,其本质也是一个HTTP请求,借用了HTTP的部分设施兼容了客户端的握手规则。


  • 握手

当服务器收到请求后,会解析请求头信息,根据升级后的协议判断该请求为WebSocket请求,并取出请求信息中的Sec-WebSocket-Key字段的数据按照某种算法重新生成一个新的字符串序列放入响应头Sec-WebSocket-Accept中。

WebSocket服务器响应头信息:

这里写图片描述

相关字段说明:
Sec-WebSocket-Accept:服务器接受客户端HTTP协议升级的证明。


  • We
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值