2012-04-24 166 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發送。

相關問題