1

有人能帮助我吗?

我正在编写客户端-服务器应用程序。服务器和客户端通过 websockets 连接。服务器管道:

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,然后通过 websockets 将其发送给客户端。客户端接收它并将其发送到修改后的指定 url,接收响应并通过 websockets 将其发送回服务器。服务器收到此响应并将数据写入请求它的 Channel。

现在的主要问题 - 将 HttpRequest 转换为 WebSocketFrame 并返回的最佳方法是什么?当前的想法是读取字符串中的 HttpRequest,然后将其作为 TextWebSocketFrame 发送。在这种情况下,我认为我需要替换为当前为服务器和客户端指定的那些标准解码器,以免进行双重对话。我在 Netty 中没有找到这样的解码器。

但也许这是不好的方式,还有一些更好的决定吗?非常感谢您的回答!我是netty的新手。

此致

4

1 回答 1

0

如果您打算封装整个 HTTP 请求,那么我认为您在通过 BinaryWebSocketFrame 发送它时处于正确的轨道上。

于 2012-04-24T23:53:07.677 回答