什么是Ajax轮询
Ajax它一般是异步的。也能同步使用。
聊天是需要长连接的,在一些场景下我们不想使用比较耗费资源的长连接,又想实现数据的监听,这时候我们就会使用Ajax的轮询。
Ajax轮询一般分为两种:
1、设定一个定时器,无论有无结果返回,时间一到就会继续发起请求,这种轮询耗费资源,也不一定能够得到想要的数据,这样的轮询是不推荐的。
2、在第一次请求的时候,如果返回数据了,那么就在成功的回调里面再次发起这个请求,就像递归一样,调用本方法。如果时间太久了,失败了,同样的再次调用这个请求,也就是本函数。
当然,这种轮询是需要后台进行配合的,没有数据改变的时候就不用返回,或者约定好逻辑。
什么是WebSocket
WebSocket 是HTML5一种新的协议,基于tcp的协议。它实现了浏览器与服务器 全双工通信(full-duplex)。
websocket 只需要服务端和客户端一次握手,需要借助 HTTP 请求完成,不需要使用轮询的方式
WebSocket 是真正实现了全双工通信的服务器向客户端推的互联网技术。
它是一种在单个 TCP连接 上进行全双工通讯协议,就可以自由进行数据传送和接收,允许服务端主动发送数据,
WebSocket和Ajax轮询的区别
Ajax的特点在于异步交互,动态更新web页面,因此Ajax的适用范围是交互较多,频繁读取数据的web应用。
websocket一般会应用在需要提供多个用户相互交流,或需要实时的展示服务端变动的数据这两种情况。
WebSocket和Ajax各自应用的场景
ajax应用场景:
用Ajax进行表单数据验证,不需要弹出新窗口,也不需要将整个页面提交到服务器,快速而又不会加重服务器负担。
按需取数据,页面会根据用户的操作向服务器请求所需要的数据,这样就不会存在数据的冗余,减少了数据下载总量。
同时,更新页面时不需要重新加载全部内容,大大缩短了用户的等待时间,需要自动更新页面,例如新闻。
Websocket使用场景:
Websocket是一个持久化的协议。用websocket可以实现服务端主动发送信息给客户端,并且客户端能够接收进行处理。
当我们创建某个会话的时候,我们彼此就建立了持久化的协议,然后各自都有约定好的监听,后台可以随时主动与你通信,你也可以主动给后台发送请求 。
使用场景如下: 社交订阅、多玩家游戏、协同编辑/编程、点击流数据、股票基金报价、体育实况更新等。