2012-04-24 75 views
1

有人可以帮助我吗?Netty。将HttpRequest转换为FrameWebSocket并返回

我在写客户端 - 服务器应用程序。服务器和客户端使用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将其发送给客户端。客户端收到它并将其发送到修改的指定网址,接收响应并通过websockets将其发送回服务器。服务器收到此响应并将数据写入请求它的通道。

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

但mayby这是坏的方法,还有一些更好的决定? 非常感谢您的回答!我是netty的新手。

问候

+0

我使用HttpMessageEncoder中的代码来编码HttpRequest,将它作为BinaryWebSocketFrame发送到WebSocket。这是工作。但也许有更好的方法。 – 2012-04-24 08:46:03

回答

0

如果您计划到封装整个HTTP请求,那么我认为你是在正确的轨道上通过BinaryWebSocketFrame发送。