1

バイナリのアップロードに Jetty WebSocket を使用しようとしていました。私はすでにクライアントとサーバーのコードをいくつか持っています。小さなバイナリ サイズを送信する場合は問題なく動作しますが、長いバイナリ サイズを送信しようとすると、Jetty にエラー メッセージが送信されます。

「バイナリ フレーム アグリゲーションが無効です」

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 状態=データバッファ= g =WebSocketGeneratorRFC6455@144d0c6 クローズ済み = false バッファ =-1}

4

4 に答える 4

0

bufferSizeinit-params に大きくすると、WebSocketServletこの問題は解決しました。

于 2016-04-07T04:40:56.457 に答える
0

私はまったく同じ問題を抱えていました。私がしたことは、MaxBinaryMessageSize次のようなものを使用して接続のプロパティを変更することthis.connection.setMaxBinaryMessageSize(163840000)です...デフォルト値は16384です。

だから私が結論付けたのは、私が持っているバイナリメッセージが WebSocket で定義された最大サイズを超えているということです。そのため、1 つのオプションは MaxBinaryMessageSize を変更することであり、別のオプションはWebSocket.OnFrameインターフェイスの実装を使用してメッセージを複数のフレームに分割することです。

于 2013-02-07T14:08:39.300 に答える
0

WebSocket.OnFrameインターフェイスを実装することでこの問題を解決しました。これが役立つことを願っています。

于 2012-07-31T06:13:34.990 に答える
0

実装WebSocket.OnFrameも私を助けたようです。それは非常に簡単です。あなたonHandshake()はあなたを覚えているだけですconnection(またはあなたはそれを行うことができますonOpen())。受信したデータに対処するためにWebSocket.FrameConnectioninを使用します。onFrame()それで全部です :) 。

于 2013-05-03T09:34:36.610 に答える