我尝试将网络套接字与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];
}
}
答案 0 :(得分:1)
Jetty WebSocket组件(和Atmosphere WebSocket组件)旨在公开新的WebSocket服务器。如果需要作为客户端连接到远程WebSocket服务器,则应使用AHC Websocket component
AHC-WS组件为客户端通过Websocket与外部服务器进行通信(作为客户端打开与外部服务器的websocket连接)提供基于Websocket的端点。