package com.claudecode.server; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean; /** * Server Mode 的 WebSocket 配置 —— 仅在 --server 模式下激活。 *

* 注册 {@link DirectConnectWebSocketHandler} 到 /ws 端点。 *

* 对应 claude-code 的 Server Mode 功能: *

*/ public class WebSocketServerConfig implements WebSocketConfigurer { private static final Logger log = LoggerFactory.getLogger(WebSocketServerConfig.class); private final DirectConnectWebSocketHandler handler; public WebSocketServerConfig(DirectConnectWebSocketHandler handler) { this.handler = handler; } @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(handler, "/ws") .setAllowedOrigins("*"); log.info("WebSocket handler registered at /ws"); } /** * 配置 WebSocket 容器参数。 */ public static ServletServerContainerFactoryBean createWebSocketContainer() { ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); container.setMaxTextMessageBufferSize(1024 * 1024); // 1MB container.setMaxBinaryMessageBufferSize(1024 * 1024); container.setMaxSessionIdleTimeout(300_000L); // 5 分钟空闲超时 return container; } }