2017-06-21 1 views
0

Ich habe eine Feder Boot-Krieg-Datei ich einen Kater 7.0.78 Instanz bin bereitstellen. Die Web-Anwendung startet gut, aber die Web-Sockets funktionieren nicht. Sie laufen gut in einer eingebetteten Tomcat-Umgebung, z.B. läuft ./gradlew bootRun.WebSockets in tomcat7 Frühjahr Boot-App

Der Fehler ich in meiner Chromkonsole bekommen ist:

angular.js:14525 Possibly unhandled rejection: Whoops! Lost connection to http://localhost:8080/websock 

Ich versuchte, den Kater Anschluss Einstellung der Http11NioProtocol zu verwenden, aber es scheint keine Wirkung zu haben.

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
     connectionTimeout="20000" 
     redirectPort="8443" />  

Ich habe auch versucht es als ROOT.war Einstellung und das Durchsuchen dann zeigt: WebSocket connection to 'ws://localhost:8080/websock/424/wzkek0zw/websocket' failed: Error during WebSocket handshake: Unexpected response code: 500.

Gibt es somethign in einer tomcat Konfigurationsdatei fehlt mir WebSockets richtig aktivieren? Meine Web-Socket-Konfiguration Klasse sieht wie folgt aus:

@Configuration 
@EnableWebSocketMessageBroker 
@EnableWebSocket 
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer { 


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

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

Ich habe nichts in web.xml bearbeitet und haben nur das Verbindungsprotokoll in server.xml geändert.

Update: Teil meines Problems wsa, dass meine Verbindung Versuche hatte einen Schrägstrich in der Front, z. $ stomp.connect ('/ websock'), also habe ich es in $ stomp.connect ('websock') geändert. Dies funktioniert bei einer Windows-Installation von Tomcat, funktioniert aber nicht bei einer Ubuntu-Installation. Ich muß es ausdrücklich sagen zu http://localhost:8080/websock in meinem Javascript zu verbinden, aber dann bekomme ich eine Folge auf Fehler versuchen, den Web-Buchse anzuschließen: war

webSocket connection to 'ws://localhost:8080/websock/940/qdb1xkkp/websocket' failed: Error during WebSocket handshake: Unexpected response code: 404 
+0

Ihr Stack-Trace Looking up gefunden: https://stackoverflow.com/a/23546192/592355 ... und es klingt sehr wahrscheinlich als Version/Umsetzung Zusammenstoß zwischen ' org.apache.tomcat.websocket'und 'javax.websocket' – xerx593

+0

Sie haben Recht. Ich hatte versucht, javax.websocket hinzuzufügen, aber es verursachte mehr Probleme. Ein Teil des Problems war, dass meine Pfade beim Verbinden falsch waren, aber ich habe immer noch Probleme. Antwort jetzt aktualisieren. –

Antwort

0

Mein Problem, dass ich die Basis-URL zu erhalten hatte, um ein korrekte vor connecitng an die Buchse über stampfen:

var getUrl = window.location; 
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1]; 
$stomp.connect(baseUrl + '/websock', {})