快捷搜索: 王者荣耀 脱发

websocket和ajax轮询的区别

1.ajax轮询

ajax,每一个前端开发都用过,都知道它一般是异步的,也能同步使用。
聊天是需要长连接的,在一些场景下我们不想使用比较耗费资源的长连接,又想实现数据监听,这时候我们就会使用ajax的轮询

ajax轮询一般分为两种:
第一种是设定一个定时器,无论有无结果返回,时间一到就会继续发起请求,这种轮询耗费资源,也不一定能得到想要的数据,这样的轮询是不推荐的。
二种轮询就是在第一次请求的时候,如果返回数据了那么就在成功的回调里面再次发起这个请求,就像递归一样,调用本方法。
如果时间太久,失败了,同样的再次调用这个请求,也就是本函数。
当然,长轮询也需要后台配合,没有数据改变的时候就不用返回,或者约定好逻辑。

2.websocket是什么

WebSocket 是HTML5一种新的协议,基于tcp的协议。它实现了浏览器与服务器 全双工通信(full-duplex)。
websocket 只需要服务端和客户端一次握手,需要借助 HTTP 请求完成,不需要使用轮询的方式
WebSocket 是真正实现了全双工通信的服务器向客户端推的互联网技术。 
它是一种在单个 TCP连接 上进行全双工通讯协议,就可以自由进行数据传送和接收,允许服务端主动发送数据,

3. websocket 和 ajax轮询 的区别是什么,各自的使用场景

Ajax的特点在于异步交互,动态更新web页面,因此Ajax的适用范围是交互较多,频繁读取数据的web应用
websocket一般会应用在需要提供多个用户相互交流,或需要实时的展示服务端变动的数据这两种情况

ajax应用场景: 
用Ajax进行表单数据验证,不需要弹出新窗口,也不需要将整个页面提交到服务器,快速而又不会加重服务器负担
按需取数据,页面会根据用户的操作向服务器请求所需要的数据,这样就不会存在数据的冗余,减少了数据下载总量。
同时,更新页面时不需要重新加载全部内容,大大缩短了用户的等待时间,需要自动更新页面,例如新闻

Websocket使用场景:
Websocket是一个持久化的协议。用websocket可以实现服务端主动发送信息给客户端,并且客户端能够接收进行处理。
当我们创建某个会话的时候,我们彼此就建立了持久化的协议,然后各自都有约定好的监听,后台可以随时主动与你通信,你也可以主动给后台发送请求 
使用场景如下: 社交订阅、多玩家游戏、协同编辑/编程、点击流数据、股票基金报价、体育实况更新等
经验分享 程序员 微信小程序 职场和发展