1

誰か助けてくれませんか?

私はクライアントサーバーアプリケーションを書いています。サーバーとクライアントは websocket で接続されています。サーバーのパイプライン:

ChannelPipeline pipeline = pipeline();
   pipeline.addLast("decoder", new HttpRequestDecoder());
   pipeline.addLast("aggregator", new HttpChunkAggregator(65536));
   pipeline.addLast("encoder", new HttpResponseEncoder());
   pipeline.addLast("handler", new WebSocketServerHandler());

クライアントのパイプライン:

final WebSocketClientHandshaker handshaker =
                    new WebSocketClientHandshakerFactory().newHandshaker(
                            uri, WebSocketVersion.V13, null, false, customHeaders);
pipeline.addLast("decoder", new HttpResponseDecoder());
                    pipeline.addLast("encoder", new HttpRequestEncoder());
                    pipeline.addLast("ws-handler", new WebSocketClientHandler(handshaker));

このアプリケーションはプロキシのように機能します。サーバーは外部から httprequest を取得し、それを WebSocket 経由でクライアントに送信します。クライアントはそれを受け取り、変更された指定された URL に送信し、応答を受け取り、websockets 経由でサーバーに送り返します。サーバーはこの応答を受け取り、それを要求したチャネルにデータを書き込みます。

今のところ主な質問 - HttpRequest を WebSocketFrame に変換して元に戻す最良の方法は何ですか? 現在のアイデアは、HttpRequest を文字列で読み取り、それを TextWebSocketFrame として送信することです。この状況では、現在サーバーとクライアントに指定されている標準のデコーダーを交換して、二重の会話を行わないようにする必要があると思います。Netty でそのようなデコーダーは見つかりませんでした。

しかし、これは悪い方法であり、もっと良い決定があるのではないでしょうか? 答えてくれてありがとう!私はネット初心者です。

よろしくお願いします

4

1 に答える 1

0

HTTP リクエスト全体をカプセル化することを計画している場合は、BinaryWebSocketFrame を介して送信するという正しい方向に進んでいると思います。

于 2012-04-24T23:53:07.677 に答える