title: Java SockJS Spring client and message size
body: <p>Using SockJS java client, I am trying to connect to Spring sockjs server and is getting error 1009 for messages (without headers) of ~20Kb. Javascript library works fine.</p>
  
  <pre><code>Transport closed with CloseStatus[code=1009, reason=The decoded text message was too big 
  for the output buffer and the endpoint does not support partial messages] in WebSocketClientSockJsSession
  [id='9fa30eb453e14a8c8612e1064640646a, url=ws://127.0.0.1:8083/user]
  </code></pre>
  
  <p>I have couple of config classes on server (I do not know at the moment if I am configuring these things more times than necessary):</p>
  
  <pre><code>@Configuration
  @EnableWebSocket
  public class WebSocketTransportConfig implements WebSocketConfigurer {
      // Important web socket setup. If big message is coming through, it may overflow the buffer and this will lead in disconnect.
      // All messages that are coming through normally (including snapshots) must be order of magnitude smaller, or connection will be broken
      // sometimes
      // There is also MaxBinaryMessageSize that we do not employ as we use Stomp, but for completeness it is also set to same values.
      // Javadoc http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.html#setTextMessageSizeLimit-int-
  
      public static final int MAX_TEXT_MESSAGE_SIZE = 2048000; // 2 Megabytes.
      public static final int BUFFER_SIZE = MAX_TEXT_MESSAGE_SIZE * 5;
  
  
      private static final Logger LOGGER = LogManager.getLogger(WebSocketTransportConfig.class);
  
      @Override
      public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
  
      }
  
      @Bean
      public DefaultHandshakeHandler handshakeHandler() {
          LOGGER.info("Websocket buffer size: " + BUFFER_SIZE + " bytes.");
          WebSocketPolicy policy = new WebSocketPolicy(WebSocketBehavior.SERVER);
          policy.setMaxTextMessageBufferSize(BUFFER_SIZE);
          policy.setMaxTextMessageSize(MAX_TEXT_MESSAGE_SIZE);
          policy.setMaxBinaryMessageBufferSize(BUFFER_SIZE);
          policy.setMaxBinaryMessageSize(MAX_TEXT_MESSAGE_SIZE);
          policy.setInputBufferSize( BUFFER_SIZE);
          policy.setIdleTimeout(600000);
  
          return new DefaultHandshakeHandler(
                  new JettyRequestUpgradeStrategy(new WebSocketServerFactory(policy)));
      }
  }
  </code></pre>
  
  <p>and </p>
  
  <pre><code>@Configuration
  @EnableWebSocketMessageBroker
  @EnableScheduling
  public class WebSocketBrokerConfig extends WebSocketMessageBrokerConfigurationSupport implements WebSocketMessageBrokerConfigurer {
  
  
      @Override
      public void configureWebSocketTransport(WebSocketTransportRegistration registry) {
          // Increase buffers. 
          // Too little buffers may result in fatal errros when transmitting relatively large messages.
          registry.setMessageSizeLimit(WebSocketTransportConfig.MAX_TEXT_MESSAGE_SIZE);
          registry.setSendBufferSizeLimit(WebSocketTransportConfig.BUFFER_SIZE);
          super.configureWebSocketTransport(registry);
      }
  }
  </code></pre>
  
  <p>According to <a href="https://stackoverflow.com/questions/34343235/stomp-spring-web-socket-message-exceeds-size-limit">Stomp spring web socket message exceeds size limit</a> that should help but when connecting Java Spring SockJS client, I still get error 1009 (too big message). </p>
  
  <p>I suspect therefore I may have one of two issues:</p>
  
  <ol>
  <li>Java SockJS client must be also configured to RECEIVE bigger messages.</li>
  <li>Or, I am still misconfigured on server.</li>
  </ol>
  
  <p>How can I increase buffer size on Java SockJS Spring client?</p>