WebSocket有没有可能取代AJAX?
软件项目开发中 , 往往需要前端与后端进行数据交互 , 而数据交互有两种最常见的形式Ajax和WebSocket 。一般而言 , 前后端实时的数据交互使用WebSocket , 而非实时数据的交互用Ajax的居多 。既然都是数据交互方案 , 曾有人称WebSocket可以替代Ajax , 真的是这样吗?Ajax 与 WebSocket 对比1、Ajax是一处异步数据传输技术Ajax是异步JavaScript和XML技术的实现 , 通过Ajax可以让网页异步更新数据(不需要重新加载整个页面) , 对页面中的部分数据进行更新 , 而且不会阻塞 。
现在所有浏览器对于Ajax技术支持都很好 , 基本上每个网站都会用到此技术 。2、WebSocket是HTML5推出的新协议WebSocket是随着HTML5推出的一种新的协议 , 通过WebSocket可实现浏览器端与服务端的双向实时通信(如聊天室) , 意味着服务器端可以主动推送数据至客户端 。现在大部分浏览器支持WebSocket协议 , 但依旧有些低版本的浏览器是不支持此协议的 。
WebSocket未来可以替代Ajax , 但当下不行WebSocket相较于Ajax有着实时性好、性能高的优点 , 未来会成为主流技术 , 但当前不行 , 毕竟WebSocket对浏览器是有要求的 。以上就是我的观点 , 对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者 , 十年互联网从业经验 , 欢迎关注我了解更多科技知识! 。
WebSocket是什么原理?为什么可以实现持久连接?
首先需要明白:基于TCP的应用层协议 , 只要设计者愿意 , 都是可以实现持久连接的 。你问的方式 , 大概是在和HTTP做比较 。HTTPhttp协议是请求应答式的文本协议 , 协议设计就是Client-Server模式 , 出发点是服务端为客户端提供资源 。http服务端只能监听和响应来自客户端的请求 , http客户端只能发起请求接受响应 , 这个是HTTP协议本身的设计 , 双向通信不在设计的考虑之内 。
关于Http协议 , 额外说点:HTTP1.0/0.9不支持keep-alive , 要完成一次HTTP请求 , 需要建立一个新的TCP连接 , 然后发送http请求 , 待接收响应后关闭连接 。HTTP1.1默认使用keep-alive , 一次HTTP请求完成后不会关闭TCP连接 , 会继续为下一个HTTP请求服务(可以类比数据库连接池和线程池的设计) , 减小建立和关闭TCP连接的开销(三次握手四次挥手) 。
当然闲置超时后也会关闭 。并非楼下所说的“把多个HTTP请求合并为一个” 。HTTP协议的设计无法实现对TCP通道的分用和复用 。因为HTTP协议没有请求的唯一标记(仅仅是URL是不行的 , 原因大家想)用来从同一TCP通道分离不同的HTTP消息 , 所以一个完整的HTTP请求在发送请求到响应回来之间是独占一个TCP通道的!是不是觉得HTTP对TCP的利用率太低了?而关于pipeline模式 , 不管在服务端还是客户端排队 , HTTP响应依然要通过进入服务端队列的顺序返回 , 这样才能和客户端HTTP请求队列用顺序做对应!所以pipeline模式某个请求被服务端因为某些原因阻塞了的情况下 , 后续请求都会阻塞 , 会引起很大的问题 , 实际上很少用 。
推荐阅读
- 求t2大神告知这是什么情况
- 蓝月传奇战士pk带什么英雄,法师传奇小说全文在线阅读
- 高清完整正版视频在线观看,微微视频
- 赛尔号玄武怎么骑,蜘蛛纸牌游戏在线玩
- 龙城之怒的法师怎么玩,法师维迦小说全文在线阅读
- 镇魔曲网页版什么时候测试,什么时候可以加入军队
- 在线等,求各位教一下
- 起名字测试打分,蒙青青名字怎么样
- 在线教学听课评价量表设计原创,试论如何进行课时备课
- "二手emi测试仪",二手EMI测试仪