Делаю UI на React. Разрабатываю это дело через create-react-app под встроенным сервером. Вношу изменения, вижу результат на странице localhost:3000. Хотелось бы посылать WebSocket-запросы со страницы localhost:3000 на localhost:8000, где у меня запущен Spring WebSocket MessageBroker. Если копирую код с относительными путями и запускаю страницу под сервлет-контейнером, то всё работает. Но в случае, когда пытаюсь послать запрос с localhost:3000, то в консоли браузера вижу, что не получается установить соединение с сервером.
Вот мой WebSocketConfig
@Configuration
@EnableWebSocketMessageBroker
@Slf4j
@CrossOrigin
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/good").setAllowedOrigins("*").withSockJS();
}
}
Было бы очень удобно делать UI отдельно от Spring-приложения, но с возможностью разрабатывать React-компоненты с запросами на действующий сервер. Браузер выдаёт на
var socket = new SockJS('http://localhost:8080/good');
Вот это:
Opening Web Socket...
stomp.js:134 Web Socket Opened...
stomp.js:134 >>> CONNECT
accept-version:1.1,1.0
heart-beat:10000,10000
А сервер пишет только:
o.s.b.w.f.OrderedRequestContextFilter : Bound request context to thread: org.apache.catalina.connector.RequestFacade@525d4c80
o.s.b.w.f.OrderedRequestContextFilter : Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@525d4c80
Господа, всё получилось! Сервер был настроен корректно.
На клиенте:
При создании подключения нужно писать полный адрес endpoint'а:
const socket = new SockJS('http://localhost:8080/good');
А подписки и сообщения слать на относительные адреса:
stompClient.send("/app/good/add", {}, {description: "desc", price: 2});
Полагаю, это связано с тем, что WebSocket создаётся один раз и дальнейшая работа идёт по относительным ссылкам в рамках его endpoint
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В общем, создал бота на java, maven работает, все окНо при попытке deploy'a толку нет
Вроде прописал код как положено и картинка становится на фонНо через некоторое время вместо нее образуется пустота и если смотреть через...