Die Frühlings -Websocket -Nachricht übergibt nicht an @MessAgemappings auf Stomp ConnectionJava

Java-Forum
Anonymous
 Die Frühlings -Websocket -Nachricht übergibt nicht an @MessAgemappings auf Stomp Connection

Post by Anonymous »

Ich verwende Spring Boot mit Stomp Over WebSocket. Die Stomp-Verbindung wird nicht erfolgreich festgelegt, und Nachrichten, die vom Client gesendet werden

Code: Select all

@Controller
@Slf4j
@MessageMapping("/api/v1")
public class LeaderboardController {
private final ScoreServiceImpl scoreServiceImpl;
private final SimpMessagingTemplate simpMessagingTemplate;

LeaderboardController(ScoreServiceImpl scoreServiceImpl, SimpMessagingTemplate simpMessagingTemplate) {
this.scoreServiceImpl = scoreServiceImpl;
this.simpMessagingTemplate = simpMessagingTemplate;
}

@MessageMapping("/leaderboard/{lb}")
public void changes(@Payload Message request, @DestinationVariable String lb, Principal principal){
log.info("Saving scores for {}", request);
ScoreResponse scoreResponse = scoreServiceImpl.saveScore(request.getPayload(), lb);
simpMessagingTemplate.convertAndSend("/topic/leaderboard/" + lb, scoreResponse);
simpMessagingTemplate.convertAndSendToUser(principal.getName(), "/queue/my-score/" + lb, scoreResponse);
log.info("pushed messages for {}", request);

}
}
Client mit WebSocket King-Client:

Code: Select all

CONNECT
accept-version:1.2
host:localhost

^@
SUBSCRIBE
id:sub-0
destination:/topic/update/racers

^@
SEND
destination:/api/v1/leaderboard/racers
content-type:application/json

{"name":"alex","score":42} ^@
WebSocket-Konfiguration:

Code: Select all

@Slf4j
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/api/v1");
registry.enableSimpleBroker("/topic", "/queue");

}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/web-socket/connect")
.addInterceptors(new CustomHandshakeInterceptorFromQuery())
.setHandshakeHandler(new CustomUsernameFromQueryHandshakeHandler())
.setAllowedOriginPatterns("*")
//        .withSockJS()
;
}

@Bean
public SimpMessagingTemplate simpMessagingTemplate(MessageChannel clientOutboundChannel){
return new SimpMessagingTemplate(clientOutboundChannel);
}
}
Benutzerdefinierte Interceptor und Handshake-Handler sind Registrierungsbenutzer ohne harte Sicherheitslogik und tun genau, wie sie benannt sind.

Code: Select all

[MessageBroker-1] o.s.w.s.c.WebSocketMessageBrokerStats    : WebSocketSession[0 current WS(0)-HttpStream(0)-HttpPoll(0), 0 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(0)-CONNECTED(0)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], outboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], sockJsScheduler[pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 0]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post