andreybavt's picture
changes
8c86632
raw
history blame
7.2 kB
package ai.giskard.learnspringwebsockets;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.socket.*;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.server.RequestUpgradeStrategy;
import org.springframework.web.socket.server.support.AbstractHandshakeHandler;
import java.io.IOException;
import java.security.Principal;
import java.util.List;
import java.util.Map;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/websocket").setHandshakeHandler(new AbstractHandshakeHandler() {
@Override
public RequestUpgradeStrategy getRequestUpgradeStrategy() {
System.out.println("public RequestUpgradeStrategy getRequestUpgradeStrategy() {");
return super.getRequestUpgradeStrategy();
}
@Override
public void setSupportedProtocols(String... protocols) {
System.out.println("public void setSupportedProtocols(String... protocols) {");
super.setSupportedProtocols(protocols);
}
@Override
public String[] getSupportedProtocols() {
System.out.println("public String[] getSupportedProtocols() {");
return super.getSupportedProtocols();
}
@Override
public void start() {
System.out.println("public void start() {");
super.start();
}
@Override
protected void doStart() {
System.out.println("protected void doStart() {");
super.doStart();
}
@Override
public void stop() {
System.out.println("public void stop() {");
super.stop();
}
@Override
protected void doStop() {
System.out.println("protected void doStop() {");
super.doStop();
}
@Override
public boolean isRunning() {
System.out.println("public boolean isRunning() {");
return super.isRunning();
}
@Override
protected void handleInvalidUpgradeHeader(ServerHttpRequest request, ServerHttpResponse response) throws IOException {
System.out.println("protected void handleInvalidUpgradeHeader(ServerHttpRequest request, ServerHttpResponse response) throws IOException {");
super.handleInvalidUpgradeHeader(request, response);
}
@Override
protected void handleInvalidConnectHeader(ServerHttpRequest request, ServerHttpResponse response) throws IOException {
System.out.println("protected void handleInvalidConnectHeader(ServerHttpRequest request, ServerHttpResponse response) throws IOException {");
super.handleInvalidConnectHeader(request, response);
}
@Override
protected boolean isWebSocketVersionSupported(WebSocketHttpHeaders httpHeaders) {
httpHeaders.toSingleValueMap().forEach((k, v) -> System.out.println(k + " -> " + v));
System.out.println("protected boolean isWebSocketVersionSupported(WebSocketHttpHeaders httpHeaders) {");
return super.isWebSocketVersionSupported(httpHeaders);
}
@Override
protected String[] getSupportedVersions() {
System.out.println("protected String[] getSupportedVersions() {");
return super.getSupportedVersions();
}
@Override
protected void handleWebSocketVersionNotSupported(ServerHttpRequest request, ServerHttpResponse response) {
System.out.println("protected void handleWebSocketVersionNotSupported(ServerHttpRequest request, ServerHttpResponse response) {");
super.handleWebSocketVersionNotSupported(request, response);
}
@Override
protected boolean isValidOrigin(ServerHttpRequest request) {
System.out.println("protected boolean isValidOrigin(ServerHttpRequest request) {");
return super.isValidOrigin(request);
}
@Override
protected String selectProtocol(List<String> requestedProtocols, WebSocketHandler webSocketHandler) {
System.out.println("protected String selectProtocol(List<String> requestedProtocols, WebSocketHandler webSocketHandler) {");
return super.selectProtocol(requestedProtocols, webSocketHandler);
}
@Override
protected List<WebSocketExtension> filterRequestedExtensions(ServerHttpRequest request, List<WebSocketExtension> requestedExtensions, List<WebSocketExtension> supportedExtensions) {
System.out.println("protected List<WebSocketExtension> filterRequestedExtensions(ServerHttpRequest request, List<WebSocketExtension> requestedExtensions, List<WebSocketExtension> supportedExtensions) {");
return super.filterRequestedExtensions(request, requestedExtensions, supportedExtensions);
}
@Override
protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map<String, Object> attributes) {
System.out.println("protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map<String, Object> attributes) {");
return super.determineUser(request, wsHandler, attributes);
}
});
}
public WebSocketHandler myHandler() {
return new WebSocketHandler() {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("afterConnectionEstablished");
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
System.out.println("handleMessage");
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
System.out.println("handleTransportError");
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
System.out.println("afterConnectionClosed");
}
@Override
public boolean supportsPartialMessages() {
return false;
}
};
}
}