Установите максимальный размер буфера конечной точки сервера веб-сокетов - PullRequest
1 голос
/ 16 апреля 2020

Как установить максимальный размер буфера для конечной точки сервера веб-сокетов? У меня проблема с закрытием сервера, поскольку клиент отправляет двоичные данные, размер которых превышает Макс. Длина кадра :

[io.net.cha.DefaultChannelPipeline] (vert.x-eventloop-thread-6) An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did no
t handle the exception.: io.netty.handler.codec.http.websocketx.CorruptedWebSocketFrameException: Max frame length of 65536 has been exceeded.

Я просто использую демо Quarkus Websocket: https://quarkus.io/guides/websockets

[ОБНОВЛЕНИЕ]

Я пробовал:

@OnMessage(maxMessageSize = 1048576) // not working!
public void onMessage(ByteBuffer message, @PathParam("username") String username) {
    broadcast(message, username);
}

и

quarkus.websocket.max-frame-size=1048576

оба не работают.

[ДРУГОЕ ОБНОВЛЕНИЕ]

Просто добавлю, я провел еще несколько тестов.

В своем коде я добавил это, чтобы проверить реальный максимум установлен размер кадра:

@ConfigProperty(name = "quarkus.websocket.max-frame-size"")
Integer maxFrameSize;

Затем просто запишите его:

@OnMessage
public void onMessage(ByteBuffer message, @PathParam("username") String username) {
 System.out.println("Max frame size: " + maxFrameSize);
 broadcast(message, username);
}

Вот вывод:

Max frame size: 1048576
2020-04-16 15:29:23,901 WARN  [io.net.cha.DefaultChannelPipeline] (vert.x-eventloop-thread-1) An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did no
t handle the exception.: io.netty.handler.codec.http.websocketx.CorruptedWebSocketFrameException: Max frame length of 65536 has been exceeded.

Кажется, что даже параметр установлен фактическим обработчик все еще использует стандартный 65536

1 Ответ

1 голос
/ 16 апреля 2020

Есть свойство, которое вы можете указать в application.properties

quarkus.websocket.max-frame-size=65536

65536 - это значение по умолчанию, поиграйте с тем, что будет работать для вас

...