Estoy creando una aplicación de chat con spring boot websocket, STOMP y stompjs, aquí está mi código js:
<script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.1.4/sockjs.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script> <script> //some code //send message stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage)); </script>Código de fondo:
@MessageMapping("/chat.sendMessage") public MessageDTO sendMessage(@Payload MessageDTO chatMessage) { //HERE if(!validatorService.validate(chatMessage)) { throw new RuntimeException("invalid"); } messagingTemplate.convertAndSend("/topic/public", chatMessage); return chatMessage; }Puedes ver que te devuelvo el mensaje. En el lado js, ¿hay alguna forma de recibir este objeto, algo así como
stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage), callback);Cuando un cliente STOMP envía un marco de MESSAGE , por lo general no obtendrá ninguna respuesta del intermediario. Sin embargo, puede recibir un marco RECEIPT si el marco MESSAGE incluye el encabezado del receipt . No está configurando este encabezado, por lo que no debe esperar ninguna respuesta del corredor.
Si desea obtener algún tipo de respuesta específica de la aplicación, deberá crear un suscriptor en su aplicación de JavaScript y la aplicación del lado del servidor deberá enviar un mensaje a donde sea que el consumidor esté escuchando. Este es el patrón clásico de mensajes de solicitud/respuesta .