Servidor:
// SocketBrokerConfig.java @Configuration @EnableWebSocketMessageBroker class SocketBrokerConfig : WebSocketMessageBrokerConfigurer { override fun configureMessageBroker(registry: MessageBrokerRegistry) { registry.enableSimpleBroker( LoginController.RESPONSE, ) registry.setApplicationDestinationPrefixes("/server") registry.setUserDestinationPrefix("/player") } override fun registerStompEndpoints(registry: StompEndpointRegistry) { registry.addEndpoint(LoginController.URI).setAllowedOrigins("http://localhost:3000").withSockJS() } } @Controller class LoginController( private val msgTemplate: SimpMessagingTemplate, ) { @MessageMapping("/server/login") fun handle( @Payload request: LoginRequest, @Header("simpSessionId") sessionId: String, ) { println("LoginController : $sessionId") msgTemplate.convertAndSend("/player/login", LoginResponse("TEST")) } } data class LoginRequest( val username: String, ) data class LoginResponse( val token: String, )Cliente del navegador:
import SockJS from "sockjs-client"; import {Stomp} from "@stomp/stompjs"; const socket = new SockJS('http://localhost:8080/server/login'); const stompClient = Stomp.over(socket); stompClient.connect({}, () => { let url = stompClient.ws._transport.url; console.log({url}); url = url.replace( "ws://localhost:8080/server/login/", ""); url = url.replace("/websocket", ""); url = url.replace(/^[0-9]+\//, ""); console.log("Your current session is: " + url); stompClient.subscribe('login', (msg) => { console.log({msg}); }) stompClient.send('/server/login', {}, JSON.stringify({ username: 'TEST' })) stompClient.send('server/login', {}, JSON.stringify({ username: 'TEST' })) stompClient.send('/login', {}, JSON.stringify({ username: 'TEST' })) stompClient.send('login', {}, JSON.stringify({ username: 'TEST' })) })Pero no hay respuesta del servidor, y tampoco hay nada en la consola del servidor (hay println en el controlador)
Es mi primera vez con Stomp, Spring Boot Websockets y SockJS Entiendo cómo funciona TCP, pero no entiendo qué regla estoy rompiendo aquí que esto no funciona :(
Por favor ayuda