@ Xmagic- Спасибо.

довалQuetion1 а такжеQuetion2 из переполнения стека для отправки сообщений конкретному клиенту на основе его sessionId, но не удалось найти успех.

Ниже мой пример класса RestController

@RestController
public class SpringSessionTestApi {

@Autowired
public SimpMessageSendingOperations messagingTemplate;

@MessageMapping("/messages")
public void greeting(HelloMessage message, SimpMessageHeaderAccessor headerAccessor) throws Exception {

    String sessionId  = (String) headerAccessor.getSessionAttributes().get("SPRING.SESSION.ID");
    messagingTemplate.convertAndSendToUser(sessionId,"/queue/test",message, createHeaders(sessionId));

   }

private MessageHeaders createHeaders(String sessionId) {
    SimpMessageHeaderAccessor headerAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE);
    headerAccessor.setSessionId(sessionId);
    headerAccessor.setLeaveMutable(true);
    return headerAccessor.getMessageHeaders();
   }
}

Session Id: когда клиент отправляет запрос createSession, генерируется новый весенний sessionId, который также сохраняется в MongoDB. После этого, когда клиент отправляет запрос на подключение к веб-сокету, он получает тот же идентификатор сессии, который, как и ожидалось, был сохранен в mongoDb Пока это все работает нормально.

Теперь моя работа состоит в том, чтобы отправить ответ клиенту на основе sessionId. Для этого у меня есть ниже класс веб-сокета:

@Configuration
@EnableScheduling
@EnableWebSocketMessageBroker
public class WebSocketConfig extends
    AbstractSessionWebSocketMessageBrokerConfigurer<ExpiringSession> {

@Override
protected void configureStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/messages");
}

public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.enableSimpleBroker("/queue");
    registry.setApplicationDestinationPrefixes("/app");
   }
}

и пример кода клиента, который я использую для подключения:

function connect() {

stompClient = Stomp.client('ws://localhost:8016/messages');
stompClient.debug = null;

stompClient.connect({}, function (frame) {
    setConnected(true);
    console.log('Connected: ' + frame);
    stompClient.subscribe('/user/queue/test', function (greeting) {
        console.log("Hello "+greeting);
        console.log("Greeting body "+JSON.parse(greeting.body));

    });
});
}

Пожалуйста, помогите, где я делаю не так в этом? Заранее спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос