Update localAddress handling in StandardWebSocketClient
Closes gh-34331
This commit is contained in:
parent
52c187bf64
commit
83cdd58ac8
|
@ -73,11 +73,9 @@ public interface WebSocketSession extends Closeable {
|
|||
/**
|
||||
* Return the address on which the request was received.
|
||||
* <p><strong>Note:</strong> The localAddress is not always possible to access,
|
||||
* which is the case with the Standard WebSocket client. In 6.2.x
|
||||
* which is the case with the Standard WebSocket client API, and accordingly
|
||||
* {@link org.springframework.web.socket.client.standard.StandardWebSocketClient}
|
||||
* returns an address based on the local host and the port of the target
|
||||
* address (not the same as the local port). In 7.0, the same will return
|
||||
* {@code null} instead.
|
||||
* returns {@code null}.
|
||||
*/
|
||||
@Nullable InetSocketAddress getLocalAddress();
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
* Copyright 2002-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -149,12 +149,10 @@ public class StandardWebSocketClient extends AbstractWebSocketClient {
|
|||
HttpHeaders headers, final URI uri, List<String> protocols,
|
||||
List<WebSocketExtension> extensions, Map<String, Object> attributes) {
|
||||
|
||||
int port = getPort(uri);
|
||||
InetSocketAddress localAddress = new InetSocketAddress(getLocalHost(), port);
|
||||
InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), port);
|
||||
InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), getPort(uri));
|
||||
|
||||
StandardWebSocketSession session = new StandardWebSocketSession(headers,
|
||||
attributes, localAddress, remoteAddress);
|
||||
StandardWebSocketSession session =
|
||||
new StandardWebSocketSession(headers, attributes, null, remoteAddress);
|
||||
|
||||
ClientEndpointConfig endpointConfig = ClientEndpointConfig.Builder.create()
|
||||
.configurator(new StandardWebSocketClientConfigurator(headers))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
* Copyright 2002-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -60,18 +60,11 @@ class StandardWebSocketClientTests {
|
|||
void getLocalAddress() throws Exception {
|
||||
URI uri = URI.create("ws://localhost/abc");
|
||||
WebSocketSession session = this.wsClient.execute(this.wsHandler, this.headers, uri).get();
|
||||
assertThat(session.getLocalAddress()).isNull();
|
||||
|
||||
assertThat(session.getLocalAddress()).isNotNull();
|
||||
assertThat(session.getLocalAddress().getPort()).isEqualTo(80);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getLocalAddressWss() throws Exception {
|
||||
URI uri = URI.create("wss://localhost/abc");
|
||||
WebSocketSession session = this.wsClient.execute(this.wsHandler, this.headers, uri).get();
|
||||
|
||||
assertThat(session.getLocalAddress()).isNotNull();
|
||||
assertThat(session.getLocalAddress().getPort()).isEqualTo(443);
|
||||
uri = URI.create("wss://localhost/abc");
|
||||
session = this.wsClient.execute(this.wsHandler, this.headers, uri).get();
|
||||
assertThat(session.getLocalAddress()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -88,7 +81,7 @@ class StandardWebSocketClientTests {
|
|||
|
||||
assertThat(session.getRemoteAddress()).isNotNull();
|
||||
assertThat(session.getRemoteAddress().getHostName()).isEqualTo("localhost");
|
||||
assertThat(session.getLocalAddress().getPort()).isEqualTo(443);
|
||||
assertThat(session.getLocalAddress()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue