diff --git a/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnection.java b/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnection.java index 9512d9fb7..167e2d2fc 100644 --- a/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnection.java +++ b/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnection.java @@ -70,7 +70,10 @@ public WebsocketConnection(Consumer configSpec) { config = WebsocketConnectionConfig.process(configSpec); // webSocketFactory and proxy configuration - this.webSocketFactory = new WebSocketFactory(); + this.webSocketFactory = new WebSocketFactory() + .setConnectionTimeout(config.connectionTimeout()) + .setSocketTimeout(config.socketTimeout()); + if (config.proxyConfig() != null) { webSocketFactory.getProxySettings() .setHost(config.proxyConfig().getHostname()) diff --git a/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnectionConfig.java b/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnectionConfig.java index 790542249..7f15fb888 100644 --- a/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnectionConfig.java +++ b/client-websocket/src/main/java/com/github/twitch4j/client/websocket/WebsocketConnectionConfig.java @@ -36,6 +36,12 @@ public void validate() { if (wsPingPeriod < 0) { throw new RuntimeException("wsPingPeriod must be 0 or greater, set to 0 to disable!"); } + if (connectionTimeout < 0) { + throw new RuntimeException("connectionTimeout must be 0 or greater, set to 0 to disable!"); + } + if (socketTimeout < 0) { + throw new RuntimeException("socketTimeout must be 0 or greater, set to 0 to disable!"); + } Objects.requireNonNull(taskExecutor, "taskExecutor may not be null!"); Objects.requireNonNull(backoffStrategy, "backoffStrategy may not be null!"); Objects.requireNonNull(onStateChanged, "onStateChanged may not be null!"); @@ -59,6 +65,16 @@ public void validate() { */ private int wsPingPeriod = 0; + /** + * Websocket timeout milliseconds for establishing a connection (0 = disabled). + */ + private int connectionTimeout = 60_000; + + /** + * Websocket timeout milliseconds for read and write operations (0 = disabled). + */ + private int socketTimeout = 10_000; + /** * WebSocket Headers */