Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save chinhvo/174c7acce648fb19b68c04877500148c to your computer and use it in GitHub Desktop.

Select an option

Save chinhvo/174c7acce648fb19b68c04877500148c to your computer and use it in GitHub Desktop.
@Configuration
@EnableWebFlux
@Slf4j
public class SimpleWebSocketHandler implements WebSocketHandler {
@Bean
public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
Map<String, WebSocketHandler> urlMap = new HashMap<>();
urlMap.put("/ws", this::handle);
SimpleUrlHandlerMapping handlerMapping = new SimpleUrlHandlerMapping();
handlerMapping.setUrlMap(urlMap);
handlerMapping.setOrder(1);
return handlerMapping;
}
@Override
public Mono<Void> handle(WebSocketSession session) {
UriComponentsBuilder builder = UriComponentsBuilder.fromUri(session.getHandshakeInfo().getUri());
Map<String,String> queryParams = builder.build().getQueryParams().toSingleValueMap();
String uniqueId = queryParams.get("email");
log.info("Websocket connected for id "+uniqueId);
Flux<WebSocketMessage> messageFlux = session.receive()
.map(msg -> "Server received: " + msg.getPayloadAsText())
.map(session::textMessage);
return session.send(messageFlux);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment