2015-04-07 311 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。