java 网页版通讯_java网页版即时通信,websocket原理,长连接长轮询

本文探讨了HTTP协议在即时通讯中的应用,从短轮询和长轮询的原理及问题出发,介绍了服务器发送事件(SSE)以及WebSocket协议的优势。WebSocket提供双向通信,适合实时性要求高的场景,但需要后端额外支持,并非所有客户端都兼容。
摘要由CSDN通过智能技术生成

01网页版即时通讯原理

http协议为无状态,单向性的协议。单向性:必须由客户端发起一个请求建立连接,服务器接收请求,把数据返回给客户端,典型的一请求一响应。

短轮询:浏览器通过循环或者setTimeout方法,每隔一段时间往后台发送一次请求,无限循环。

长轮询:不停地向后台请求数据,但是后台如果检测不到数据变动,就会将这个请求挂掉。如果检测到数据变动,就会响应这个请求变动数据。

a577f60206a7fbe3e1603b82e798bdbe.png

长连接:在进行http数据传输的时候,在数据传输层一直开着一个TCP通道,所有请求资源文件都是通过复用这个通道去请求数据,有超时时间。

短连接:如果http进行的短链接,即每次浏览器发送请求,都会创建TCP通道,然后传输完成了再进行销毁,重复操作,消耗很大。

基于http即时通讯采用ajax短轮询的方案。带来的问题会产生带宽上的一个延迟,并且带来一个结果的延迟。短轮询来说太浪费了,请求的基本是无用的请求。大大损耗了性能。

02基于ajax长轮询方式

基于长连接的服务器推模型sse。

1. 服务器端会阻塞请求直到有数据传递或超时才返回。

2. 客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。

3. 当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。

03Websocket通信:

也是html5中的协议,实现与服务端与客户端双向,基于消息的文本或二进制数据通信。适合于对数据的实时性要求很强的场景,如通信、直播、共享桌面,特别适用于客户与服务频繁交互的情况下。如实时共享,多人协作等平台。

采用新的协议,后端需要单独实现,客户端并不是所有浏览器都支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值