2017-05-27 14 views
0

私のコードは完全にlocalhostで動作しますが、アプリケーションを切断するとこのエラーが発生します。WebSocketハンドシェイク中にエラーが発生しました(予期しない応答コード:400)

'WSS://url.com/webSocket/193/uj4s3xue/websocket' へのWebSocket接続に失敗しました:エラーを のWebSocketハンドシェイク中:予期しない応答コード:400

sockjs.min.js: 2 POST https://url.com/webSocket/193/e1vwalij/xhr_streaming?t=1495418202369 403(禁止)

JSコード:

function connect() { 
     var socket = new SockJS('/webSocket'); 
     stompClient = Stomp.over(socket); 
     stompClient.connect({}, function (frame) { 
      stompClient.debug = null; 
      stompClient.subscribe('/topic/messages/' + vm.id, function (greeting) { 
       refreshMessages(JSON.parse(greeting.body)); 
      }); 
     }); 
    } 

Javaコード:

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.messaging.simp.config.ChannelRegistration; 
import org.springframework.messaging.simp.config.MessageBrokerRegistry; 
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; 
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; 
import org.springframework.web.socket.config.annotation.StompEndpointRegistry; 

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

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

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

    @Bean 
    public PresenceChannelInterceptor presenceChannelInterceptor() { 
     return new PresenceChannelInterceptor(); 
    } 

    @Override 
    public void configureClientInboundChannel(ChannelRegistration registration) { 
     registration.setInterceptors(presenceChannelInterceptor()); 
    } 

    @Override 
    public void configureClientOutboundChannel(ChannelRegistration registration) { 
     registration.taskExecutor().corePoolSize(8); 
     registration.setInterceptors(presenceChannelInterceptor()); 
    } 
} 

ばねサーバの例外以下の処理が行われます。

2017年5月27日11:14:57.101 ERROR 51230 --- [XNIO-2タスク11] oswsss DefaultHandshakeHandler:ヌル

2017年5月27日11:16:10.020 ERROR 51230 --- [MessageBrokerに-1] osssTaskUtils $ LoggingErrorHandler:予期しないエラーが発生し01ハンドシェイクが原因 無効アップグレードヘッダに失敗しましたはスケジュールされたタスクです。

org.springframework.web.socket.sockjs.SockJsTransportFailureException: SockJsFrame content = 'h';書き込みに失敗しました。 org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:339)で破断管 org.springframework.web.socket.sockjsで:ネストされた例外は にjava.io.IOExceptionあります org.springframeworkで org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession $ HeartbeatTask.run(AbstractSockJsSession.java:451) で.transport.session.AbstractSockJsSession.sendHeartbeat(AbstractSockJsSession.java:255) .scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ( )java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.c java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.runで java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180) (ScheduledThreadPoolExecutorのでoncurrent.FutureTask.run(FutureTask.java:266)。 Javaの:293) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) で java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)のjava.langで で。 Thread.run(Thread.java:748)原因: java.io.IOException:壊れたパイプが にあります。sun.nio.ch.FileDispatcherImpl.writev0(ネイティブメソッド)at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher 。 java:51)at sun.nio.ch.IOUtil.write(IOUtil.java:148)at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504)at org.xnio.nio.NioSocketConduit。 write(NioSocketConduit.java:161)at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit。Javaの: で645) でio.undertow.conduits.ChunkedStreamSinkConduit.doWrite(ChunkedStreamSinkConduit.java:163) io.undertow.conduits.ChunkedStreamSinkConduit.write(ChunkedStreamSinkConduit.java:127) org.xnio.conduitsで io.undertow.server.HttpServerExchange $ WriteDispatchChannel.write(HttpServerExchange.java:2049で.ConduitStreamSinkChannel.write(ConduitStreamSinkChannel.java:150) でio.undertow.channels.DetachableStreamSinkChannel.write(DetachableStreamSinkChannel.java:240) ) at io.undertow.servlet.spec.ServletOutputStreamImpl.writeBufferBlocking(ServletOutputStreamImpl.java:570) でio.undertow.servlet.spec.ServletOutputStreamImpl.flushInternal(ServletOutputStreamImpl.java:485) でio.undertow.servlet.spec.ServletOutputStreamImpl.flush(ServletOutputStreamImpl.java:472) io.undertow.servletました。 spec.HttpServletResponseImpl.flushBuffer(HttpServletResponseImpl.java:461) でjavax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:215)で javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:215) におけるORG .springframework.security.web.util.OnCommittedResponseWrapper.flushBuffer(OnCommittedResponseWrapper.java:159) () 210 javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:215) でorg.springframework.http.server.ServletServerHttpResponse.flush(ServletServerHttpResponse.java:96) org.springframework.web.socket.sockjs.transportで.session.AbstractHttpSockJsSession.writeFrameInternal(AbstractHttpSockJsSession.java:350) org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:322) における... 10個の共通フレームが

を省略しました

severはapache2 web severです。この問題を解決するにはどうすればよいですか。

答えて

0

私は

にsudo a2enmod proxy_wstunnel

は/ etc/apache2の/サイト対応にあるapacheの000-default-le-ssl.confファイルにRewriteEngineを作るとws_tunnelを活性化させることによって、この問題をslove /000-default-le-ssl.conf

RewriteEngine On 
    RewriteCond %{HTTP:Upgrade} =websocket [NC] 
    RewriteRule /webSocket(.*)   ws://127.0.0.1:8080/webSocket/$1 [P,L] 
関連する問題