网状。将HttpRequest转换为FrameWebSocket并返回

时间:2012-04-24 06:28:59

标签: proxy websocket httprequest netty

有人能帮助我吗?

我正在编写客户端 - 服务器应用程序。服务器和客户端与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的新人。

祝你好运

1 个答案:

答案 0 :(得分:0)

如果您打算封装整个HTTP请求,那么我认为您通过BinaryWebSocketFrame发送它是正确的。