diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java index 724377ca474d..63867379e49d 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java @@ -23,6 +23,8 @@ public class HttpHubConnectionBuilder { private Map headers; private TransportEnum transportEnum; private Action1 configureBuilder; + private long serverTimeout = HubConnection.DEFAULT_SERVER_TIMEOUT; + private long keepAliveInterval = HubConnection.DEFAULT_KEEP_ALIVE_INTERVAL; HttpHubConnectionBuilder(String url) { this.url = url; @@ -140,6 +142,28 @@ public HttpHubConnectionBuilder setHttpClientBuilderCallback(Action1 emptyArray = new ArrayList<>(); private static final int MAX_NEGOTIATE_ATTEMPTS = 100; @@ -49,8 +52,8 @@ public class HubConnection implements AutoCloseable { // These are all user-settable properties private String baseUrl; private List onClosedCallbackList; - private long keepAliveInterval = 15 * 1000; - private long serverTimeout = 30 * 1000; + private long keepAliveInterval = DEFAULT_KEEP_ALIVE_INTERVAL; + private long serverTimeout = DEFAULT_SERVER_TIMEOUT; private long handshakeResponseTimeout = 15 * 1000; // Private property, modified for testing @@ -120,7 +123,7 @@ Transport getTransport() { HubConnection(String url, Transport transport, boolean skipNegotiate, HttpClient httpClient, HubProtocol protocol, Single accessTokenProvider, long handshakeResponseTimeout, Map headers, TransportEnum transportEnum, - Action1 configureBuilder) { + Action1 configureBuilder, long serverTimeout, long keepAliveInterval) { if (url == null || url.isEmpty()) { throw new IllegalArgumentException("A valid url is required."); } @@ -159,6 +162,9 @@ Transport getTransport() { this.headers = headers; this.skipNegotiate = skipNegotiate; + this.serverTimeout = serverTimeout; + this.keepAliveInterval = keepAliveInterval; + this.callback = (payload) -> ReceiveLoop(payload); } diff --git a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java index 34cf8cd64a4a..53d11d3d972d 100644 --- a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java +++ b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java @@ -314,7 +314,7 @@ public void removingMultipleHandlersWithOneCallToRemove() { Action action = () -> value.getAndUpdate((val) -> val + 1); Action secondAction = () -> { value.getAndUpdate((val) -> val + 2); - + complete.onComplete(); }; @@ -3962,4 +3962,28 @@ public void hubConnectionStopDuringConnecting() { assertTrue(close.blockingAwait(30, TimeUnit.SECONDS)); } + + @Test + public void serverTimeoutIsSetThroughBuilder() + { + long timeout = 60 * 1000; + HubConnection hubConnection = HubConnectionBuilder + .create("http://example.com") + .withServerTimeout(timeout) + .build(); + + assertEquals(timeout, hubConnection.getServerTimeout()); + } + + @Test + public void keepAliveIntervalIsSetThroughBuilder() + { + long interval = 60 * 1000; + HubConnection hubConnection = HubConnectionBuilder + .create("http://example.com") + .withKeepAliveInterval(interval) + .build(); + + assertEquals(interval, hubConnection.getKeepAliveInterval()); + } }