您的位置 首页 java

使用Spring 5,HTTP 2.0 实现服务器端主动推送内容到客户端

Spring 5

一 创建工程

到网站

 

初始化一个Spring Boot的maven工程,需要选中web和Thymeleaf

初始化工程

选择Generate Project就会下载一个压缩包。

二 配置自签名证书

由于需要运行在https协议之上,所以我们创建一个自签名证书。

解压上面下载的压缩包,进入到目录

push-demosrcmainresources
 

运行命令:

keytool -genkey -alias demo -keyalg rsa -dname "CN= demo " -keystore demo.jks -storetype JKS
 

用keytool生成jks文件

提示输入密码的时候输入password

三 编写代码

在IntellJ中导入该工程(也可以使用别的IDE)。

1.启用https的配置

修改application.properties文件,内容如下:

server.http2.enabled=true
server. ssl .key-store=classpath:demo.jks
server.ssl.key-password=password
server.ssl.key-alias=demo
server.ssl.key-store-type=JKS
 

该配置文件启用https,并且使用我们上一步配置的证书

2.静态文件

在template文件夹下创建文件push. html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Push Example</title>
</head>
<body>
<h1>Hello World</h1>
<img src="/img/spring5.png" alt="Spring 5"/>
</body>
</html>

 

html文件

在static/img目录下放置引用到的图片文件

3.编写Controller代码

在包com.example.pushdemo下创建类PushController. java ,代码内容如下

package com.example.pushdemo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind. annotation .GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax. servlet .http.PushBuilder;
@Controller
@RequestMapping("push")
public class PushController {
 @GetMapping("with")
 public String demoWithPush(PushBuilder pushBuilder){
 if(null!=pushBuilder){
 pushBuilder.path("/img/spring5.png").push();
 }
 return "push";
 }
 @GetMapping("without")
 public String demoWithoutPush(){
 return "push";
 }
}
 

Controller代码

至此代码编写完成。

四 测试

运行PushDemoApplication.java

打开浏览器分别测试两个URL


 

两个URL,一个没有用push,一个用服务端push

没有push效果

下面是有服务端推送效果的截图,可以看到chrome的开发者工具中显示push字样,并且Waterfall和没有推送的请求不一样。

有服务端推送效果

这个简单的网页看不出多少推送的效果,如果网页比较复杂,内容比较多,服务端主动推送可以提升用户体验,加快网页加载速度。

文章来源:智云一二三科技

文章标题:使用Spring 5,HTTP 2.0 实现服务器端主动推送内容到客户端

文章地址:https://www.zhihuclub.com/190901.shtml

关于作者: 智云科技

热门文章

网站地图