Ich habe den folgenden Code, der einen sicheren Websocket-Endpunkt in einer eigenständigen Java-Anwendung (jnlp getriggert) einrichten und mir erlauben soll, von einem Client (Javascript im Browser) mit der URL zu verbinden : ws: // localhost: 8444/echoIch kann keine Verbindung zu einem sicheren Websocket herstellen, der auf Jetty läuft
Der Server ohne Fehler startet, aber ich kann keine Verbindung:
WebSocket-Verbindung zu 'WSS: // localhost: 8444/echo' fehlgeschlagen: Fehler in Verbindungsaufbau: net :: ERR_CONNECTION_CLOSED
server = new Server();
SslContextFactory contextFactory = new SslContextFactory();
contextFactory.setKeyStorePath("/path/keys/keystore.jks");
contextFactory.setKeyStorePassword("changeit");
SslConnectionFactory sslConnectionFactory = new SslConnectionFactory(contextFactory, org.eclipse.jetty.http.HttpVersion.HTTP_1_1.toString());
ServerConnector connector = new ServerConnector(server, sslConnectionFactory);
connector.setPort(8444);
ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
contextHandler.setContextPath("/");
HandlerCollection hc = new HandlerCollection();
hc.addHandler(contextHandler);
server.setHandler(contextHandler);
server.addConnector(connector);
// Add websocket servlet
ServletHolder wsHolder = new ServletHolder("echo",new EchoSocketServlet());
contextHandler.addServlet(wsHolder,"/echo");
try
{
server.start();
server.join();
}
catch (Exception e)
{
e.printStackTrace();
}
Wenn jemand einen offensichtlichen Fehler in den oben genannten erkennen kann, würde einige Rückmeldung geschätzt werden. Außerdem kann ich erfolgreich eine Verbindung zu den obigen herstellen, wenn ich die SslConnectionFactory entferne und mich mit einer nicht SSL-Websocket-URL (ws: //) verbinde.
Wenn Sie versuchen, sich mit etwas wie 'https: // localhost: 8444/blarg' zu verbinden, erhalten Sie eine nützlichere Fehlermeldung? –
Die 'HandlerCollection hc' wird nicht verwendet, Sie können sie jedoch entfernen. –
Versuchte die URL wie in einem Browser vorgeschlagen und erhalten die folgenden: curl: (35) Server abgebrochen der SSL-Handshake Ich hätte gedacht, dass die HC im obigen Code aufgrund der Tatsache verwendet wurde, dass der ContextHandler hinzugefügt wird, die wird dann als Handler zum Serverobjekt hinzugefügt? – dre