所以我一直在用netty写一个服务器而且我还没有写任何其他内容所以我想知道我的管道方法是否正确。
我在服务器和客户端有两个默认处理程序,ObjectEncoder和Decoder,我想为我添加到服务器的每个功能创建一个新的处理程序,例如我有一个UserAuthenticationHandler,UserActionHandler,每个处理不同的数据包和传递他们到相应的班级。
所以这是我想到的另一个方法,另一个是每个功能的一个处理程序,这意味着我必须编写一个大开关来处理所有这些功能。
可以使用第一种方法,还是应该留在第二种?
public class UserAuthenticationHandler extends AbstractPacketHandler {
private User user;
public UserAuthenticationHandler(User user, DatabaseConnection databaseConnection) {
this.user = user;
new UserAuthenticator(databaseConnection);
}
@Override
protected void handlePacket(Packet packet) {
switch (packet.packetType){
case "START_LOGIN":
UserAuthenticator.startLoginProcess(packet, user);
}
}
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
super.channelActive(ctx);
}
public User getUser(){
return user;
}
}
想象一下第一个,但每个班级都有50多个开关案例和大地狱构造函数。
答案 0 :(得分:1)
一般情况下,如果有意义的话,我会建议使用不同的处理程序,因为它们会对不同的消息起作用。从你所解释的说,这似乎并非如此。我认为在你的情况下,你应该只有解码器/编码器,然后是一个处理器,它分配给正确的业务逻辑"您应用的界面。