У меня есть приложение для Spring Boot, которое использует WebSockets (топ для уведомлений в режиме реального времени. Приложение интегрировано с keyCloak для аутентификации. Рабочий процесс заключается в следующем: < /p>
Клиент JavaScript подключается к конечной точке /WS, предоставляя токен JWT в заголовке авторизации. < /Li>
Канал -инчевов на сервере утверждает токен и устанавливает подбору пользователя (UUID) в качестве основного сеанса WebSockeocke. Подписывается на тему/пользователь/уведомления. UserId - это подставка пользователя.@Configuration
@EnableWebSocketMessageBroker
@Order(Ordered.HIGHEST_PRECEDENCE + 99)
@RequiredArgsConstructor
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private final JwtDecoder jwtDecoder;
private final JwtAuthConverter jwtAuthConverter;
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws")
.setAllowedOriginPatterns("*") //TODO da modificare quando si saprà cosa mettere
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/user");
registry.setApplicationDestinationPrefixes("/app");
registry.setUserDestinationPrefix("/user");
}
< /code>
Некоторые журналы в бэкэнд: < /p>
2025-09-19T23:29:26.755+02:00 DEBUG 10008 --- [app] [nio-8080-exec-5] s.w.s.h.LoggingWebSocketHandlerDecorator : New WebSocketServerSockJsSession[id=smnkzqoc] WebSocket CONNECT: Principal = 71412206-e72d-478c-b1f2-4447f386424d
2025-09-19T23:29:29.239+02:00 DEBUG 10008 --- [app] [nboundChannel-2] o.s.m.s.b.SimpleBrokerMessageHandler : Processing CONNECT session=smnkzqoc
2025-09-19T23:29:36.053+02:00 DEBUG 10008 --- [app] [nboundChannel-5] o.s.m.s.b.SimpleBrokerMessageHandler : Processing SUBSCRIBE /user/notifications id=sub-0 session=smnkzqoc
2025-09-19T23:29:43.693+02:00 INFO 10008 --- [app] [nio-8080-exec-2] c.m.o.o.s.impl.KeycloakServiceImpl : getSub of the username useruser@live.it Invio WebSocket a utente: 71412206-e72d-478c-b1f2-4447f386424d contenuto: E' presente un questionario da compilare, accedi all'apposita area per completare il Questionnaire
2025-09-19T23:29:43.920+02:00 DEBUG 10008 --- [app] [nio-8080-exec-2] o.s.m.s.b.SimpleBrokerMessageHandler : Processing MESSAGE destination=/user/71412206-e72d-478c-b1f2-4447f386424d/notifications session=null payload={"content":"Nuova notifica: E' presente un questionario da compilare"}
< /code>
Что не так с этим? Я хотел не помещать подписанную подзаготоку на ключевой категории на пути назначения с фронта, потому что я читал, что это то, что обрабатывается автоматически к весне, но я не могу заставить его работать.
Заранее!
У меня есть приложение для Spring Boot, которое использует [b] WebSockets [/b] (топ для уведомлений в режиме реального времени. Приложение интегрировано с [b] keyCloak [/b] для аутентификации. Рабочий процесс заключается в следующем: < /p> [b] Клиент JavaScript подключается к конечной точке /WS, предоставляя токен JWT в заголовке авторизации. < /Li> Канал -инчевов на сервере утверждает токен и устанавливает подбору пользователя (UUID) в качестве основного сеанса WebSockeocke. Подписывается на тему/пользователь/уведомления. UserId - это подставка пользователя.@Configuration @EnableWebSocketMessageBroker @Order(Ordered.HIGHEST_PRECEDENCE + 99) @RequiredArgsConstructor public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private final JwtDecoder jwtDecoder; private final JwtAuthConverter jwtAuthConverter;
@Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/ws") .setAllowedOriginPatterns("*") //TODO da modificare quando si saprà cosa mettere .withSockJS(); }
@Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.enableSimpleBroker("/user"); registry.setApplicationDestinationPrefixes("/app"); registry.setUserDestinationPrefix("/user"); }
< /code> Некоторые журналы в бэкэнд: < /p> 2025-09-19T23:29:26.755+02:00 DEBUG 10008 --- [app] [nio-8080-exec-5] s.w.s.h.LoggingWebSocketHandlerDecorator : New WebSocketServerSockJsSession[id=smnkzqoc] ✅ WebSocket CONNECT: Principal = 71412206-e72d-478c-b1f2-4447f386424d 2025-09-19T23:29:29.239+02:00 DEBUG 10008 --- [app] [nboundChannel-2] o.s.m.s.b.SimpleBrokerMessageHandler : Processing CONNECT session=smnkzqoc 2025-09-19T23:29:36.053+02:00 DEBUG 10008 --- [app] [nboundChannel-5] o.s.m.s.b.SimpleBrokerMessageHandler : Processing SUBSCRIBE /user/notifications id=sub-0 session=smnkzqoc 2025-09-19T23:29:43.693+02:00 INFO 10008 --- [app] [nio-8080-exec-2] c.m.o.o.s.impl.KeycloakServiceImpl : getSub of the username useruser@live.it 📤 Invio WebSocket a utente: 71412206-e72d-478c-b1f2-4447f386424d contenuto: E' presente un questionario da compilare, accedi all'apposita area per completare il Questionnaire[/b] 2025-09-19T23:29:43.920+02:00 DEBUG 10008 --- [app] [nio-8080-exec-2] o.s.m.s.b.SimpleBrokerMessageHandler : Processing MESSAGE destination=/user/71412206-e72d-478c-b1f2-4447f386424d/notifications session=null payload={"content":"Nuova notifica: E' presente un questionario da compilare"} < /code> Что не так с этим? Я хотел не помещать подписанную подзаготоку на ключевой категории на пути назначения с фронта, потому что я читал, что это то, что обрабатывается автоматически к весне, но я не могу заставить его работать. Заранее!