我希望能够拦截客户端向我的端点发出的第一个请求,以便能够使用101(已建立WebSocket)或拒绝它。
有什么拦截器可以用吗?我试着注册一个过滤器bean,但它似乎只是跳过了,我想是因为我在一个webflux应用程序中。
@Bean
public FilterRegistrationBean<ContextFilter> initialFilter() {
FilterRegistrationBean<ContextFilter> registrationBean
= new FilterRegistrationBean<>();
registrationBean.setFilter(new MyFilter());
registrationBean.addUrlPatterns("/*");
registrationBean.setOrder(1);
return registrationBean;
}
字符串
和
public class MyFilter extends OncePerRequestFilter{
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
log.info("You know, for filtering");
filterChain.doFilter(request, response);
}
型
2条答案
按热度按时间d6kp6zgx1#
要建立RSocket连接,客户端必须发送第一个称为SETUP帧的帧。您可以使用Spring
@ConnectMapping
annotation捕获它。字符串
要拒绝连接,请使用如上所示的
rSocketRequester.rsocket().dispose()
。注意,使用SETUP帧,您可以像往常一样从客户端传递负载和元数据。ilmyapht2#
您可以通过实现
WebSocketHandler
拦截第一个请求,并使用ServerHttpRequest
访问请求的头和查询参数,并使用ServerHttpResponse
修改响应以返回101
状态代码。字符串