У меня возникли проблемы с получением больших подпротокольных сообщений с использованием Spring Boot, Spring WebSocket и Undertow. Сообщения обрезаются после 16kB. После выполнения некоторого рытья я нашел следующую конфигурацию свойство, которое, кажется, делать то, что я хочу:Как получить сообщения WebSocket размером более 16 КБ с Spring WebSockets и Undertow
недвижимостиserver.undertow.buffer-size=32768
Этой конфигурация, кажется, правильно подобрала при проверке/configprops привода конечной точки. К сожалению, это не помогает при получении сообщений размером более 16 КБ.
Я также наткнулся на этих зловещих линиях от документации прибойной (курсив моего):
Для серверов идеального размера, как правило, 16k, так как это , как правило, максимальный объем данных, которые могут быть записаны через операцию write() (в зависимости от сетевой настройки операционной системы).
Это подтверждает то, что я испытывал, что настройка server.undertow.buffer-size
не влияет, поскольку она ограничена установкой уровня ОС. Поскольку я использую Ubuntu Linux, я играл с настройками net.core.rmem_*
и net.core.wmem_*
, но они также не имеют никакого эффекта. Невозможно воспроизвести эту проблему на macOS.
Кто-нибудь знает, как настроить Undertow, Spring Boot и/или Spring WebSocket для поддержки этих сообщений?