2012-07-27 2 views
1

Я пытался использовать Jetty WebSocket для загрузки двоичных файлов. У меня уже есть код клиента и сервера. Он отлично работает, если я отправить небольшие бинарные размеры, но если я пытаюсь послать длинный двоичный Jetty отправить сообщение об ошибке:jetty (WebSocket) Активация двоичных кадров отключена

«Двоичных агрегации кадров отключены»

WARN: oejw.WebSocketConnectionRFC6455: Рама отбрасывается. Двоичная агрегация запрещена для SCEP @ fdbc27 {l (/ 0: 0: 0: 0: 0: 0: 0: 1: 51199) < -> r (/ 0: 0: 0: 0: 0: 0: 0: 1 : 8081), d = true, open = true, ishut = false, oshut = false, rb = false, wb = false, w = true, i = 1r} - {WebSocketServletConnectionRFC6455 p = WebSocketParserRFC6455 @ 1264bf5 state = DATA buffer = g = WebSocketGeneratorRFC6455 @ 144d0c6 closed = false buffer = -1}

ответ

0

Я решил эту проблему, реализовав интерфейс WebSocket.OnFrame. Надеюсь, это поможет.

0

У меня была точно такая же проблема. То, что я сделал, это изменение свойства соединения MaxBinaryMessageSize с использованием чего-то вроде this.connection.setMaxBinaryMessageSize(163840000) ... Значение по умолчанию - 16384.

Так что я заключил, что двоичное сообщение, которое у меня превышает, имеет максимальный размер, определенный в WebSocket. Таким образом, один параметр изменяет MaxBinaryMessageSize, а другой использует реализацию интерфейса WebSocket.OnFrame для разделения сообщения на несколько кадров.

0

Выполнение WebSocket.OnFrame, похоже, помогло мне. Это очень легко. В вашем onHandshake() вы просто запомните свой connection (или вы можете сделать это в onOpen()). Вы используете WebSocket.FrameConnection в onFrame(), чтобы справиться с данными, которые вы получили. Это все :) .

0

Ввод большего размера bufferSize в начальные параметры WebSocketServlet решил эту проблему для меня.

Смежные вопросы