SimpMessagingTemplate sendet keine Nachrichten an websocket
Ich habe die folgende Steuerung
@Controller
public class GreetingController
{
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Person greeting(String message) throws Exception {
Person person=new Person();
person.setAge(10);
return person;
}
@Autowired
private SimpMessagingTemplate template;
@RequestMapping(path="/meeting",method=RequestMethod.POST)
public @ResponseBody void greet() {
this.template.convertAndSend("/topic/greetings", "message");
}
}
und meine Konfiguration ist
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig1 extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").withSockJS();
}
}
So sollte laut SpringDoc template.convertAndSend ("/ topic / greetings", "message") der Broker anrufen und der zugeordnete Web-Socket wird aufgerufen.
Code für das Frontend mit SockJS
var socket = new SockJS('/hello');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function(greeting){
console.log(JSON.parse(greeting.body));
});
// to send via the web service-WORKING ( but websocket not called in springs)
$.post("http://localhost:8080/meeting");
// to send via websocket - WORKING
stompClient.send("/app/hello", {}, JSON.stringify({ 'message':'message'}));
Die Konsole enthält keine Fehler. Ich kann es über SockJs verbinden und eine Nachricht an "/ topic / greetings" senden, aber ich möchte einen webService aufrufen, der im Gegenzug den webSocket aufruft. Also, nachdem ich viel gesucht habe, stecke ich fest, weil es keine Fehler gibt und ich keinen anderen Weg finden kann, es im Frühling zu tun.