I'm actually trying to make a WebSocket server working but without success.
I'm using Spring 5 WebFlux and starting a Netty server with the following endpoint : https://localhost:443/ws/events
Here are my conf. files :
CORS handling :
@Configuration
@EnableWebFlux
public class CorsGlobalConfiguration implements WebFluxConfigurer {
@Override
public void addCorsMappings(CorsRegistry corsRegistry) {
corsRegistry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.maxAge(3600);
}
}
WebSocket conf. :
@Configuration
@EnableWebFlux
public class WebSocketConfiguration {
private final EventManager eventManager;
public WebSocketConfiguration(EventManager eventManager) {
this.eventManager = eventManager;
}
@Bean
public HandlerMapping handlerMapping() {
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setUrlMap(Collections.singletonMap("/ws/events", new EventsWebSocketHandler(eventManager)));
mapping.setOrder(-1);
return mapping;
}
@Bean
public HandlerAdapter handlerAdapter() {
return new WebSocketHandlerAdapter();
}
}
EventWebSocketHandler class :
@Component
public class EventsWebSocketHandler implements WebSocketHandler {
private final EventManager eventManager;
private ConcurrentHashMap<Request, Set<Event>> eventsMap;
public EventsWebSocketHandler(EventManager eventManager) {
this.eventManager = eventManager;
}
@Override
public Mono<Void> handle(WebSocketSession webSocketSession) {
this.eventsMap = eventManager.getMap();
Flux<WebSocketMessage> output = webSocketSession
.receive()
.doOnNext(msg -> { convertToDTO(); });
return webSocketSession.send(output);
}
With Postman I've tried those settings (and many others) :
But I've got this error message :
I must say that the Sec-WebSocket-Key header has a value I've found on a web page related to this kind of problems. I really don't know where I could find a valid value for that and I'm far to be an expert about all of these knowledges related to servers, http protocol or SSL.
At that point, I can not tell that the problem comes from that value.
Can someone share her/his own experience about WebFlux and WebSocket (Spring 5) and how to set this up so that it works ?
Thanx by advance.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…