Enviando el mensaje a pisar cliente en cada petición HTTP

Alina J:

Tengo un servidor de inicio de la primavera y un cliente que se conecta a través de WebSockets utilizando STOMP.

Mi caso de uso es que quiero enviar datos al cliente, cada vez que una petición HTTP a un parámetro específico se hace. Todos los tutoriales que he encontrado, sólo muestran el caso, que el cliente envía algunos datos a "/ hola" y esto tiene en el servidor mediante el envío de datos al "tema" / saludos:

@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
    Thread.sleep(1000); // simulated delay
    return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
}

Lo que necesito es un método de control que envía datos sin la necesidad del mapeo de mensajes. Sólo debe enviar datos al cliente cada vez que alguien realiza una solicitud GET para el punto final. He intentado lo siguiente, pero no funcionó:

@Autowired
private SimpMessagingTemplate msgTemplate;

@SendTo("topic/data-received")
@RequestMapping(value = "/send-data", method = RequestMethod.POST)
public String sendData(@RequestHeader(value = "id") String id,
                               @RequestHeader(value = "data") String data) {

    User user = new User();
    user.id = UUID.fromString(id);
    user.stringData = data;
    database.saveStringData(user);
    msgTemplate.convertAndSend("topic/data-received", "data sent!!");
    return "successful";
}

Aquí está mi código de cliente:

function connect() {
var socket = new SockJS('/clipboard-websocket');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
    console.log('Connected: ' + frame);
    stompClient.subscribe('topic/data-received/', function (message) {
        alert("Data received!!");
    });
}

Y ese es mi WebSocket config:

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
    config.enableSimpleBroker("/topic");
    config.setApplicationDestinationPrefixes("/app");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/clipboard-websocket").withSockJS();
}
Barath:

Barra final no se encuentra en el destino

msgTemplate.convertAndSend("/topic/data-received", "data sent!!");

introducir descripción de la imagen aquí

github-repo-tema-54498776

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=215879&siteId=1
Recomendado
Clasificación