簡體   English   中英

在Netty客戶端中處理來自服務器的響應

[英]Handling response from server in Netty client

我正在使用Netty編寫JavaFX應用程序以實現自定義協議。 沒有會話狀態,但是我想將服務器響應與特定的出站請求相關聯(並將結果返回到正確的JavaFX Task 。)到目前為止,我無法在客戶端代碼中做到這一點,因為responseFuture是ChannelFuture<Void>

future = tcpBoostrap.connect(address, 3333).sync();
final Channel channel = future.awaitUninterruptibly().channel();

ChannelFuture responseFuture = channel.writeAndFlush(requestBuilder.build());
responseFuture.addListener(new ChannelFutureListener() {
    @Override
    public void operationComplete(ChannelFuture channelFuture) throws Exception {
        if (channelFuture.isSuccess()) {
            logger.debug("completed operation: {}", channelFuture.toString());
        }
    }
});

我嘗試查看如何配置PipeLine以某種方式安裝ChannelHandlers ,這些ChannelHandlers將在共享上下文變量中共享信息,但是我找不到任何重要的東西。

誰能建議我可以在Netty中填充響應的慣用位置嗎?

Netty無法理解配對機制,因此無法為您做這些工作。 在客戶端,您需要實現ChannelHandler並將初始化.handler(handler)傳遞給.handler(handler)方法。 有關詳細信息,請參見Netty TimeClient示例 在處理程序channelRead方法中,處理來自服務器的響應,將其反序列化,並根據與先前創建的Future對應用程序對特定的機制進行反序列化並完成它。 Future不一定一定是Netty的未來,因為這部分完全超出了Netty的處理范圍。

對於配對,我假設您使用發送到服務器的某些ID,服務器將相同的ID發送回客戶端。 因此,在這種情況下,一些Map<Long, Future<?>>就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM