Я могу установить sh соединение через веб-сокет с моим сервером Springboot, но я не могу получить доступ к конечной точке из @MessageMapping
, когда я пытаюсь отправить сообщение. Вот мои конфигурации:
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/simulator")
.setAllowedOrigins("http://myiphere:3000")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/endpoint");
registry.setApplicationDestinationPrefixes("/app");
}
И простой контроллер:
@RestController
@RequestMapping("/api")
public class MyController {
@MessageMapping("/hello/")
@SendTo("/endpoint/greeting")
public Greeting getCurrentLocation() {
System.out.println("hello here");
return GenericBuilder.of(Greeting::new)
.with(Greeting::setContent, "hello from server")
.build();
}
}
Я использую библиотеку socketjs-client
в ReactJS, следуя this учебник:
import SockJS from "sockjs-client";
import Stomp from "stompjs";
let stompClient;
const connect = () => {
const socket = new SockJS("http://myiphere:8081/simulator");
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log("Connected " + frame);
stompClient.subscribe("http://myiphere:8081/endpoint/greeting", function (greeting) {
console.log("hi" + JSON.parse(greeting.body).content);
});
});
};
const sendSomething = () => {
stompClient.send("http://myiphere:8081/app/hello/", {});
};
И некоторые кнопки с событиями onClick, привязанными к методам выше. Соединение работает, я получаю сообщения о подключении в консоли браузера, но когда я пытаюсь нажать кнопку с sendSomething()
, я ничего не получаю ни в консоли браузера, ни в консоли сервера.