我正在尝试使用Spring的WebSocketStompClient
。我需要设置代理以访问STOMP服务器。我尝试了通常的socksProxySet,socksProxyHost,socksProxyPort
,但没有成功。
你有任何想法如何为WebSocket(Stomp)Client
设置代理吗?
我正在尝试使用Spring的WebSocketStompClient
。我需要设置代理以访问STOMP服务器。我尝试了通常的socksProxySet,socksProxyHost,socksProxyPort
,但没有成功。
你有任何想法如何为WebSocket(Stomp)Client
设置代理吗?
@Bean
public WebSocketStompClient client() {
StandardWebSocketClient client = new StandardWebSocketClient();
List<Transport> webSocketTransports = Arrays.asList(new WebSocketTransport(client), new RestTemplateXhrTransport(getRestTemplate()));
SockJsClient sockJsClient = new SockJsClient(webSocketTransports);
WebSocketStompClient stompClient = new WebSocketStompClient(sockJsClient);
stompClient.setAutoStartup(true);
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
return stompClient;
}
// Rest template with proxy configuration
private RestTemplate getRestTemplate() {
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
if (environment.getProperty("http.proxySet", boolean.class, false)) {
String proxyHost = environment.getProperty("http.proxyHost");
String proxyUser = environment.getProperty("http.proxyUser");
String proxyPassword = environment.getProperty("http.proxyPassword");
Integer proxyPort = environment.getProperty("http.proxyPort", Integer.class);
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
new AuthScope(proxyHost, proxyPort),
new UsernamePasswordCredentials(proxyUser, proxyPassword));
HttpHost myProxy = new HttpHost(proxyHost, proxyPort);
clientBuilder.setProxy(myProxy)
.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy())
.setDefaultCredentialsProvider(credentialsProvider);
}
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setHttpClient(clientBuilder.build());
return new RestTemplate(factory);
}