Spaces:
Sleeping
Sleeping
test-spring-websockets
/
src
/main
/java
/ai
/giskard
/learnspringwebsockets
/LearnSpringWebsocketsApplication.java
package ai.giskard.learnspringwebsockets; | |
import org.springframework.boot.SpringApplication; | |
import org.springframework.boot.autoconfigure.SpringBootApplication; | |
import org.springframework.stereotype.Component; | |
import org.springframework.web.filter.OncePerRequestFilter; | |
import javax.servlet.FilterChain; | |
import javax.servlet.ServletException; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletRequestWrapper; | |
import javax.servlet.http.HttpServletResponse; | |
import java.io.IOException; | |
import java.util.Collections; | |
import java.util.Enumeration; | |
public class LearnSpringWebsocketsApplication { | |
public static void main(String[] args) { | |
SpringApplication.run(LearnSpringWebsocketsApplication.class, args); | |
} | |
static class RequestWrapperFilter extends OncePerRequestFilter { | |
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) | |
throws ServletException, IOException { | |
final HttpServletRequestWrapper reqWrapper = new HttpServletRequestWrapper(request) { | |
public Enumeration<String> getHeaders(String name) { | |
if ("connection".equals(name) && "UPGRADE".equals(super.getHeaders(name).nextElement())) { | |
return Collections.enumeration(Collections.singleton("Upgrade")); | |
} | |
return super.getHeaders(name); | |
} | |
public String getHeader(String name) { | |
if ("connection".equals(name) && "UPGRADE".equals(super.getHeader(name))) { | |
return "Upgrade"; | |
} | |
return super.getHeader(name); | |
} | |
}; | |
System.out.println("HEADERS: " + request.getServletPath()); | |
request.getHeaderNames().asIterator().forEachRemaining(s -> { | |
System.out.println("HEADER: " + s + " = " + request.getHeader(s) + " ---> " + reqWrapper.getHeader(s)); | |
}); | |
filterChain.doFilter(reqWrapper, response); | |
} | |
} | |
} | |