Почему клиент не может получить информацию из подписки? - PullRequest
0 голосов
/ 14 апреля 2019

Проект содержит WebSocketConfiguration с конечной точкой 'ws' и простым префиксом посредника '/ topic'.

@Override
    public void registerStompEndpoints(StompEndpointRegistry registry)
    {
        registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry)
    {
        registry.setApplicationDestinationPrefixes("").
                enableSimpleBroker("/topic");
    }

Когда я вызываю метод post ('/ action') из бэкэнд-сервиса в угловом компоненте, сообщение конвертируется и отправляется по назначению '/topic/test'.

 @PostMapping("/action/{id}")
    public ResponseEntity<Information> action(HttpSession httpSession, @PathVariable(name = "id") String gameId,
                                              @Valid  @RequestParam("action") Action action) {
        try
        {
            Information information = gameService.handle(httpSession.getId(),
                    UUID.fromString(gameId), action);
            messagingTemplate.convertAndSend("/topic/test", "go");
            return new ResponseEntity<>(information, HttpStatus.OK);
        } catch (HttpClientErrorException e) {
            return new ResponseEntity<>(e.getStatusCode());
        }
    }

В угловом компоненте результат websocket не обновляется, как если бы сообщение не отправлялось по назначению.Соединение в конструкторе компонента:

  constructor(private route: ActivatedRoute, private gameService: GameService) {

    this.route.params.subscribe(params => {
      this.id = params['id'];
    });
    const socket = new SockJS(`http://192.168.0.16:8080/ws`);
    let stomp = Stomp.over(socket);
    stomp.connect('', function(frame) {
      stomp.subscribe(`/topic/test`, res => {
        console.log(res);

      });
    });
  }

ОБНОВЛЕНИЕ : У меня есть решение.Я просто изменяю конечную точку на «сокет» с «ws», и это работает.Я не знаю почему.Почему это работает?Это очень забавная ситуация для меня, и я хочу знать, почему.

...