apache骆驼码头websocket java.net.BindException

时间:2020-07-26 11:27:49

标签: java spring websocket apache-camel

我尝试将网络套接字与Apache Camel Jetty Websocket Component连接 Websocket的网址是: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];
    }





    }

1 个答案:

答案 0 :(得分:1)

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

AHC-WS组件为客户端通过Websocket与外部服务器进行通信(作为客户端打开与外部服务器的websocket连接)提供基于Websocket的端点。