什么是推送技术:
推送技术是指将服务器端的数据,主动由服务器发起请求,将数据发送给消费者浏览器客户端
实现方案:
1.短轮询:
实现描述:
a. 在页面使用js编写死循环,
b. 死循环中使用ajax, 每隔几秒发送一次请求, 到服务器
c. 服务器返回成功或者失败响应结果, 如果接收到失败消息, 这继续死循环, 直到接收到成功结果, 跳出死循环
优点:
推送效果, 简单可以实现
缺点:
对于服务器会接收到大量重复的无用请求, 对服务器压力非常大
使用场景:
用户量, 并发量, 数据量不多的政务系统或者传统企业网站., 这种技术比较老旧十几年前使用.
2.长轮询:
实现描述:
a. 页面发送一次ajax请求
b. 在服务器端接收请求, 并进入死循环, 每循环一次, 线程可以睡3秒, 在死循环中可以调用微信查询接口, 查询支付状态
c. 如果微信返回结果是未支付, 则继续死循环, 如果微信返回结果是支付成功, 则跳转死循环并返回响应给页面.
优点:
由于页面只发送一次请求, 服务器并发压力不大.
推送效果可以简单实现
缺点:
如果高并发, 大量用户访问, 则会开N多的线程使用, 这样会造成服务器压力非常大.
使用场景:
在现在的一些政府政务系统中有使用, 同样是用在并发量, 用户量不多的情况下使用.
3.webSocket:
实现描述:
a. 浏览器必须是支持webSocket的版本.
b. 服务器端也要支持webSocket协议, tomcat7.0.27才开始支持webSocket协议.
优点:
客户端和浏览器端双向通讯, 通讯效率极高. 并且真实的实现了推送效果.
缺点:
不是所有的客户端浏览器 和服务器端都支持这种技术.
什么是webSocket:
webSocket是底层基于TCP协议的双向通讯技术.
http和websocket区别:
http是单向通讯技术, webSocket是双向通讯技术, 所以webSocket效率比http要高
http和webSocket同属于应用层协议, 底层也同样使用TCP协议.