[英]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.