/**
* 处理前端每一次完整请求的数据
* @param socket
* @param buf
*/
private void dealContent(NetSocket socket,Buffer buf){
contents.computeIfAbsent(socket.toString(),key->Buffer.buffer());
contents.get(socket.toString()).appendBuffer(buf.copy());
Buffer full_content = contents.get(socket.toString());
if(full_content.length() > 4 ){
int content_length = Integer.valueOf(full_content.getBuffer(0, 4).toString());
Buffer last = full_content.getBuffer(4,full_content.length());
/**
* 开始处理某次请求的完整数据
*/
if(last.length() >= content_length){
//当前要处理的完整请求数据
String mes = last.slice(0,content_length).copy().toString("utf-8");
System.out.println("客户端数据 : "+mes);
JsonObject json = new JsonObject(mes);
System.out.println(json.getString("role"));
System.out.println(json.getString("action"));
System.out.println(json.getJsonObject("msg").toString());
/**
* 添加刚进入的socket到相应的corridor 并通知此socket此corridor的情况
*/
if(json.getString("role").equals("corridor") && json.getString("action").equals("connect")){
JsonObject msg = json.getJsonObject("msg");
System.out.println("进入的socket : "+msg.toString());
//通知 各个游戏不同
dealFirstNotify(msg.getString("game"),socket);
}
/**
* 消息处理
*/
else {
Buffer buffer = Buffer.buffer().appendString("你好呀","utf-8");
socket.write(buffer);
}
/**
* 消息广播
*/
contents.put(socket.toString(),full_content.slice(content_length+4,full_content.length()).copy());
}
}
}