2015-04-07 313 views
-1

如何解决这个写法messageReceived()
更确切地说,如何根据消息连接的客户端的内容来配置服务器的响应。正确执行方法messageReceived()(Netty)

String fromClientData =""; 
String [] params; 
User user; 
@Override 
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws IOException { 
    fromClientData = e.getMessage().toString(); 
    params = fromClientData.split(";"); 
    String idOrDemo = params[1]; 

    if (params[0].equals("demo")) { 
     user = useService.getById(idOrDemo); 
     e.getChannel().write("demo;" + user.getId() + ";"); 
    } 

    if (params[0].equals("site")) { 
     Integer id = Integer.parseInt(idOrDemo); 
     user = userService2.getById(id); 

     if (params[2].split(":")[0].equals("SOME")) { 
      //todo something 
     } 

     ctx.getChannel().write("SOME:" + str + ";");  
    } else { 

     user.setChannelUser(e.getChannel()); 
     if (params[1].equals("updateCache")) { 
      sendUpdate(); 
     } 
     else { 
      setClient(); 
     } 
    } 
    } else { 
     Integer id = Integer.parseInt(idOrDemo); 
     user = userService.getById(id); 

     user.setChannelUser(e.getChannel()); 
     if (params[1].equals("updateCache")) { 
      sendUpdate(); 
     } 
     else { 
      setClient(); 
     } 
    } 
} 
+0

你能提供更多关于你需要的信息吗?并提供一个框架结构的例子? – HCarrasko

回答

0

首先,经过

e.getChannel().write("demo;" + user.getId() + ";"); 

你需要做的:

e.getChannel().flush()或更换,以e.getChannel().writeAndFlush("demo;" + user.getId() + ";");

二,拆分后,我建议,如果改变条件的:

if ("demo".equals(params[0])) { } 

因为,如果params[0]为空,您将有NullPointerException。