Skip to content

websocket.idleTimeout ignored when using JettyServer — always disconnects after 30s #3795

@goodcwj

Description

@goodcwj

Summary

When using Jooby 4.x with JettyServer, the websocket.idleTimeout setting in application.conf is ignored.
The WebSocket connection always closes after ~30 seconds of inactivity, even if the configured timeout is much longer (e.g. 1h).

Switching to NettyServer works correctly.


Environment

  • Jooby version: 4.0.7
  • Server: Jetty
  • Java version: 21
  • Run mode: joobyRun

Reproduction

App.java

import io.jooby.Jooby;
import io.jooby.jetty.JettyServer;

public class App extends Jooby {
  {
    ws("/ws", (ctx, ws) -> {
      ws.onConnect(ws-> System.out.println("Connected"));
      ws.onMessage((ws, msg) -> session.send("Echo: " + msg.value()));
    });
  }

  public static void main(String[] args) {
    runApp(args, new JettyServer(), App::new);
  }
}

conf/application.conf

websocket.idleTimeout = 1h

Then connect any WebSocket client and leave it idle for 1 minute.

Expected behavior

Connection should remain open for the configured timeout (1 hour).

Actual behavior

Connection closes after ~30 seconds:

org.eclipse.jetty.websocket.core.exception.WebSocketTimeoutException: Connection Idle Timeout

Additional Info
It seems the timeout value is correctly read in JettyServer.java:

long timeout = conf.hasPath("websocket.idleTimeout")
    ? conf.getDuration("websocket.idleTimeout", TimeUnit.MILLISECONDS)
    : TimeUnit.MINUTES.toMillis(5L);
WebSocketUpgradeHandler.from(this.server, context, (container) -> {
  container.setIdleTimeout(Duration.ofMillis(timeout));
});

However, the effective ServerWebSocketContainer used by JettyContext appears to be null or not initialized with this value.

Please confirm if this is a known issue or if I missed any configuration step.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions