Я создаю игру 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}));
}
Что не так?Почему это не работает?