如何解决Springboot 代理路由 webscoket 和 http 请求
我需要向现有的 Spring Boot 应用程序添加简单的请求转发功能。
目前我有后端 zeppelin 服务器,由于某些限制,我无法直接访问 zeppelin url,所以我需要添加一个可以将请求路由到 zeppelin 服务器的代码,如下所示
浏览器-->Spring-boot(proxy)-->Zeppelin
我的简单代理代码
@Controller
@RequestMapping("/proxy")
public class SimpleController {
@GetMapping("/**",produces = "application/json")
public ResponseEntity<String> getUsers(HttpServletRequest request) {
String url = request.getRequestURI();
url = url.replace("proxy","");
return sendRequestusingRestTemplate(url,request);
}
}
public ResponseEntity<String> sendRequestusingRestTemplate(String url,HttpServletRequest requestrequest)
{
RestTemplate restTemplate = new RestTemplate();
String zeppelinServerUrl = "http://192.168.1.34:8080/"+url;
restTemplate.getForEntity(zeppelinServerUrl,String.class);
URI uri = new URI(zeppelinServerUrl);
HttpHeaders headers = new HttpHeaders();
Enumeration<String> headerNames = request.getHeaderNames();
headerNames.asIterator().forEachRemaining(header -> {
headers(header,request.getHeader(header);
});
HttpEntity<String> requestEntity = new HttpEntity<>(null,headers);
return restTemplate.exchange(uri,HttpMethod.GET,requestEntity,String.class)
}
它一直工作到一些请求,但作为 zeppelin ui 的一部分,它尝试打开一个 websocket 到后端服务器,所以当浏览器发送连接升级请求时它不起作用。
是否有一种简单的方法可以为此添加路由,或者我需要将请求作为 webscoket 客户端重新路由到我的后端服务器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。