私は、SockJSを備えたWebSocket上のSTOMPとJWTを使用したRest Endpointを使用して全二重通信のモバイルデバイスを接続するStateless Spring(4.2.4.RELEASE)私はWebサーバーとしてTomcat 8.0.33を使用しており、sockjs javascriptクライアントでhtmlを使用してテストしています。 stompプロトコルはhttpフォールバックを使って正常に動作しますが、websocketプロトコルだけを使って行うことはできません。私はCORSをいろいろ試してみましたが、Tomcatの問題かバネの設定が間違っています。私は同じドメインとポートでも自分のHTMLをテストしました.SockJSはまだxhrやiframeに落ちています。SockJSとTomcat上のSTOMPがWebソケットにアップグレードされていない春
WebScoketConfig.java
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer
{
@Override
public void registerStompEndpoints(StompEndpointRegistry registry)
{
RequestUpgradeStrategy upgradeStrategy = new TomcatRequestUpgradeStrategy();
registry.addEndpoint("/ws").setHandshakeHandler(new DefaultHandshakeHandler(upgradeStrategy))
.setAllowedOrigins("*").withSockJS().setSessionCookieNeeded(false)
.setStreamBytesLimit(512 * 1024)
.setHttpMessageCacheSize(1000)
.setDisconnectDelay(30 * 1000);
}
@Override
public void configureClientOutboundChannel(ChannelRegistration registration) {
registration.taskExecutor().corePoolSize(50);
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry)
{
registry.enableSimpleBroker("/queue/", "/topic/");
// registry.enableStompBrokerRelay("/queue/", "/topic/");
registry.setApplicationDestinationPrefixes("/myapp");
}
public void configureWebSocketTransport(WebSocketTransportRegistration registration) {
registration.setMessageSizeLimit(500 * 1024);
registration.setSendBufferSizeLimit(1024 * 1024);
registration.setSendTimeLimit(20000);
}
}
WebSecurityConfig.java
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.csrf().disable()
.authorizeRequests()
.antMatchers("/**").permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
}
}
私は最新のTomcatバージョンを使用しています。 WebSocketをサポートしています。 – cardeol