Java 在每个http请求上向客户端发送stomp消息

Java 在每个http请求上向客户端发送stomp消息,java,spring,spring-boot,websocket,stomp,Java,Spring,Spring Boot,Websocket,Stomp,我有一个spring引导服务器和一个客户端,它们通过WebSocket使用STOMP连接 我的用例是,每次向特定端点发出http请求时,我都要向客户端发送数据。 我找到的所有教程都只显示了这样一种情况,即客户端向“/hello”发送一些数据,而服务器通过向“topic/greetings”发送数据作出反应: 我需要的是一个控制器方法,它发送数据而不需要消息映射。每次有人向端点执行get请求时,它应该只向客户端发送数据。我尝试了以下方法,但无效: @Autowired private SimpMe

我有一个spring引导服务器和一个客户端,它们通过WebSocket使用STOMP连接

我的用例是,每次向特定端点发出http请求时,我都要向客户端发送数据。 我找到的所有教程都只显示了这样一种情况,即客户端向“/hello”发送一些数据,而服务器通过向“topic/greetings”发送数据作出反应:

我需要的是一个控制器方法,它发送数据而不需要消息映射。每次有人向端点执行get请求时,它应该只向客户端发送数据。我尝试了以下方法,但无效:

@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";
}
这是我的客户代码:

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!!");
    });
}
这是我的WebSocket配置:

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

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

目标中缺少尾部斜杠

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


非常感谢您的工作!不幸的是,这还没有解决问题。我在项目的其他地方少了一条斜线。现在工作;)
msgTemplate.convertAndSend("/topic/data-received", "data sent!!");