Spring Boot – So konfigurieren Sie die maximale Nutzlastgröße des Websockets
Posted: 24 Dec 2024, 11:35
Ich habe versucht, die maximale Nutzlastgröße für Binär- und Textnachrichten für die Websocket-Serveranwendung in Spring Boot zu konfigurieren, ohne Erfolg.
Es ist berechtigt zu erwähnen, dass ich sie nicht verwende AbstractWebSocketMessageBrokerConfigurer für Broker-Nachrichten mit STOMP, der die Methode zum Konfigurieren der Nutzlastgröße enthält, zum Beispiel:
Auch der Versuch, ServletServerContainerFactoryBean als Teil der Websocket-Konfigurations-Bean einzuschleusen, funktioniert nicht:
Unter Verwendung des unformatierten WebSocket-Handlers habe ich bisher keine Möglichkeit gefunden, das Limit zu konfigurieren, außer innerhalb der AbstractWebSocketHandler-Instanz als Teil der Methode afterConnectionEstablished für jede Sitzung wie folgt.
Frage:
Es ist berechtigt zu erwähnen, dass ich sie nicht verwende AbstractWebSocketMessageBrokerConfigurer für Broker-Nachrichten mit STOMP, der die Methode zum Konfigurieren der Nutzlastgröße enthält, zum Beispiel:
Code: Select all
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureWebSocketTransport(WebSocketTransportRegistration registry) {
registry.setMessageSizeLimit(8 *1024);
registry.setSendBufferSizeLimit(8 *1024);
registry.setSendTimeLimit(8 *1024);
}
}
Code: Select all
@Bean
public ServletServerContainerFactoryBean createWebSocketContainer() {
ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
container.setMaxTextMessageBufferSize(8 * 1024);
container.setMaxBinaryMessageBufferSize(8 * 1024);
return container;
}
Code: Select all
public class WebSocketHandler extends AbstractWebSocketHandler {
private static final Logger logger = LoggerFactory.getLogger(WebSocketHandler.class);
/**
* @param session
*/
@Override
public void afterConnectionEstablished(WebSocketSession session) {
logger.info("Connection established on session: {}", session.getId());
session.setBinaryMessageSizeLimit(64 * 1024); // Can be loaded from profile configuration parameter
session.setTextMessageSizeLimit(64 * 1024); // Can be loaded from profile configuration parameter
}
}
- Vermisse ich etwas, eine Profilkonfigurationsvariable, eine Bean? Das kann injiziert werden, oder ist dies die einzige Möglichkeit, die maximale Nutzlastgröße für Websocket-Nachrichten zu konfigurieren?