0
스프링 응용 프로그램이 있습니다.스프링 websocket upgraderequest
초기 핸드 셰이크에 값을 입력해야합니다. 내 웹 소켓 핸들러에서이 key=value
필요 ws://localhost:8080/chat?key=value
: 같은
URL입니다 보인다.
어떻게 액세스 할 수 있습니까?
웹 소켓 구성 :
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
// alle origins erlauben
registry.addHandler(chatWebSocketController(), "/chat").addInterceptors(new HttpSessionHandshakeInterceptor())
.setAllowedOrigins("*");
}
@Bean
public ChatWebSocketController chatWebSocketController() {
return new ChatWebSocketController();
}
}
웹 소켓 처리기 방법 :
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
if (session.getAttributes().containsKey("key")) {
List<String> userMap = session.getHandshakeHeaders().get("key");
JwtTokenUtil jwtTokenUtil = new JwtTokenUtil();
String token = userMap.get(0);
if (jwtTokenUtil.validateToken(token)) {
User userToStore = new User(jwtTokenUtil.getUsernameFromToken(token));
userUsernameMap.put(session, userToStore);
LOGGER.info("User with name " + jwtTokenUtil.getUsernameFromToken(token) + "and IP "
+ session.getRemoteAddress() + " successfully connected");
sendConnectMessage(session, userToStore);
}
} else {
session.close(CloseStatus.POLICY_VIOLATION);
}
}