這是一個(gè)簡(jiǎn)單的問(wèn)題。Netty 似乎是在服務(wù)器和客戶端之間發(fā)送信息的一個(gè)很好的工具。我想發(fā)送信息,還有事件……或者更確切地說(shuō),稱為做什么的指令。public class PojoServerHandler extends ChannelInboundHandlerAdapter { private Logger logger = LoggerFactory.getLogger(getClass()); @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { Message body = (Message) msg; logger.info("server read msg id:{}, body:{}", body.getId(), body.getBody()); Message response = new Message(); response.setId(1024); response.setFrom("server"); response.setBody("hello from server"); ctx.writeAndFlush(response); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { logger.error("server caught exception", cause); ctx.close(); }}我這里有這段代碼,它描述了服務(wù)器的處理程序。當(dāng)客戶端向服務(wù)器發(fā)送消息時(shí)。該方法channelRead將被直接調(diào)用。如果我想在我的應(yīng)用程序中使用其他功能,那么實(shí)現(xiàn)switch caseinside是否明智,或者 Netty 可以通過(guò)其他方式做到這一點(diǎn)?channelRead
1 回答

藍(lán)山帝景
TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
可以有多個(gè)處理程序,每個(gè)處理程序執(zhí)行不同的任務(wù),而不是使用 switch case。您只需致電
ctx.fireChannelRead(msg);
如果您打算不在特定處理程序中處理消息,那么它將觸發(fā)管道中的下一個(gè)處理程序。
添加回答
舉報(bào)
0/150
提交
取消