apache 骆驼码头 websocket java.net.BindException

apache camel jetty websocket java.net.BindException

我尝试用 Apache Camel Jetty Websocket Component 连接一个 websocket Websocket 的 url 是:wss://echo.websocket.org

我遇到了这个错误:

org.apache.camel.RuntimeCamelException: MultiException[java.io.IOException: Failed to bind to echo.websocket.org/174.129.224.73:443, java.io.IOException: Failed to bind to echo.websocket.org/174.129.224.73:443]

我还没有真正理解他是如何在 ws 和 wss 之间进行选择的,我试着放一个自签名的 sslContextParameters/

这是我的代码:

@Configuration
public class EipConfiguration extends RouteBuilder {


        @Override
        public void configure() {
            CamelContext context = new DefaultCamelContext();

            String server = "echo.websocket.org";
            int port = 443;

            String uri = "websocket://"+server+":"+port+"/?sslContextParameters=#sslContextParameters";
        from(uri)
                .log(">>> Message received from WebSocket Client : ${body}");
    }

    @Bean(name = "sslContextParameters")
    public SSLContextParameters sslContextParameters() throws Exception {
        TrustManagersParameters trustManagersParameters = new TrustManagersParameters();
        X509ExtendedTrustManager extendedTrustManager = new InsecureX509TrustManager();
        trustManagersParameters.setTrustManager(extendedTrustManager);

        SSLContextParameters sslContextParameters = new SSLContextParameters();
        sslContextParameters.setTrustManagers(trustManagersParameters);

        return sslContextParameters;
    }

}

InsecureX509TrustManager

public class InsecureX509TrustManager extends X509ExtendedTrustManager {
    @Override
    public void checkClientTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
        //Do nothing

    }

    @Override
    public void checkServerTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
        //Do nothing

    }

    @Override
    public void checkClientTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
        //Do nothing

    }

    @Override
    public void checkServerTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
        //Do nothing

    }

    @Override
    public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        //Do nothing

    }

    @Override
    public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        //Do nothing

    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return new X509Certificate[0];
    }





    }

Jetty WebSocket 组件(和 Atmosphere WebSocket 组件)旨在公开新的 WebSocket 服务器。如果您需要作为客户端连接到远程 WebSocket 服务器,您应该使用 AHC Websocket component

The AHC-WS component provides Websocket based endpoints for a client communicating with external servers over Websocket (as a client opening a websocket connection to an external server).