WebSocket: Spring + Angular 7 - сообщения не доставляются в API - PullRequest
0 голосов
/ 25 мая 2019

Я создаю игру TicTacToe весной + Angular с веб-сокетами.Клиент подключается через API:

>>> CONNECT
login:
passcode:[object Object]
accept-version:1.1,1.0
heart-beat:10000,10000

<<< CONNECTED
version:1.1
heart-beat:0,0

connected to server undefined

>>> SUBSCRIBE
id:sub-0
destination:/app/board/game

, но это все.Я не могу отправлять и получать сообщения.

Мой контроллер (выглядит как обычный контроллер):

   @Autowired
    private lateinit var msgTemplate: SimpMessagingTemplate

    var logger = LoggerFactory.getLogger(GameController::class.java)

    @SubscribeMapping("/action")
    fun updateBoard(@Payload action: GameAction) {
        logger.debug("updateBoard")
        this.msgTemplate.convertAndSend(
                "board/state",
                GameState(isGameEnd = false, isWin = false)
        )
    }

Мой WebSocketConfig:

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig : WebSocketMessageBrokerConfigurer {

    override fun configureMessageBroker(config: MessageBrokerRegistry) {
        config.setApplicationDestinationPrefixes("/app")
        config.enableSimpleBroker("/game")
    }

    override fun registerStompEndpoints(registry: StompEndpointRegistry) {
        registry.addEndpoint("/game-socket")
                .setAllowedOrigins("*")
    }
}

И служба сокетов от клиента:

initializeWebSocketConnection() {
    this.stompClient = Stomp.over(new WebSocket(this.serverUrl));
    this.stompClient.connect('', {}, (frame) => {
      this.stompClient.subscribe('/app/board/game',
        (message) => {
           console.log(message.body);
        })
    });
  }

  takeAction(id: number) {
    this.stompClient.send('/game/action', {}, JSON.stringify({position: id}));
  }

Что не так?Почему это не работает?

...