Я пытаюсь реализовать простой websocket с Stomp (а не Sock Js) с сервером Spring и Angular клиентом.
Вот мой код для включения websocket в Spring:
@Configuration
@EnableScheduling
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractSecurityWebSocketMessageBrokerConfigurer {
@Bean
public TaskScheduler heartBeatScheduler() {
return new ThreadPoolTaskScheduler();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker('/status').setHeartbeatValue(new long[] { 10000, 10000})
.setTaskScheduler(heartBeatScheduler());
registry.setApplicationDestinationPrefixes('/');
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint('/myapp-websocket).setAllowedOrigins("*");
}
@Override
protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
messages.anyMessage().authenticated();
}
@Override
protected boolean sameOriginDisabled() {
return true;
}
}
Но я не могу подключиться к нему, когда я пытаюсь angular с stomp js, соединение никогда не устанавливается. Когда я тестирую с помощью wscat wscat -c "ws://localhost:4200/api/myapp-websocket"
(кстати, / api / is good), ответа нет, он всегда пытается соединиться без успеха.
Что здесь не так?
Редактировать: Здесь это две зависимости, которые я использую
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-messaging</artifactId>
</dependency>
Редактировать:
Я также пытаюсь изменить messages.anyMessage().authenticated();
на messages.anyMessage().permitAll();
, но такое же поведение я все еще не могу подключить к своей веб-розетке ..