diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 902b116..c6d8bfe 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -10,6 +10,7 @@
+
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 31ce7e1..07ea0aa 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -3,6 +3,8 @@
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 11b353a..e743370 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -12,6 +12,7 @@
+
diff --git a/web_group/pom.xml b/web_group/pom.xml
index 7b0b3bc..8f84f74 100644
--- a/web_group/pom.xml
+++ b/web_group/pom.xml
@@ -14,6 +14,13 @@
+
+
+ org.apache.httpcomponents.client5
+ httpclient5
+ 5.4.4
+
+
junit
junit
@@ -21,6 +28,12 @@
test
+
+ com.alibaba.fastjson2
+ fastjson2
+ 2.0.43
+
+
com.data
diff --git a/web_group/src/main/java/com/group/service/GroupRoomService.java b/web_group/src/main/java/com/group/service/GroupRoomService.java
index b849c1b..9f7d656 100644
--- a/web_group/src/main/java/com/group/service/GroupRoomService.java
+++ b/web_group/src/main/java/com/group/service/GroupRoomService.java
@@ -1,5 +1,11 @@
package com.group.service;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -1063,6 +1069,8 @@ public class GroupRoomService {
String key = createGroupRoom(session, groupId, pid);
resData = publicJoinRoom(groupId, session, key, platform);
}
+
+ /* robot jefe
Jedis jedis11 = Redis.use("group1_db11").getJedis();
try {
jedis11.zremrangeByScore(grooms_key, 0, 0);
@@ -1093,6 +1101,8 @@ public class GroupRoomService {
} finally {
jedis11.close();
}
+
+ */
return resData;
}
@@ -1106,80 +1116,161 @@ public class GroupRoomService {
log.info("sendRobotData :"+roomid+"groupid:"+groupid+"robot_host:"+robot_host);
+ Jedis js1 = Redis.use("group1_db3").getJedis();
+ try {
- CompletableFuture future = CompletableFuture.supplyAsync(() -> {
- // 执行任务
- Jedis js1 = Redis.use("group1_db3").getJedis();
- String flag = js1.get("roomsend"+roomid);
- if(flag!=null){
- js1.close();
+ String flag = js1.get("roomsend" + roomid);
+ if (flag != null) {
return null;
}
- js1.set("roomsend"+roomid,1+"");
- js1.expire("roomsend"+roomid,5);
- try {
- Thread eventThread = new Thread(() -> {
- while (true) {
- NetManager.processEvents();
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- break;
- } catch (Exception e) {
- }
- }
- }, "tstse");
+ js1.set("roomsend" + roomid, 1 + "");
+ js1.expire("roomsend" + roomid, 5);
- eventThread.setDaemon(true); // 设置为守护线程
- eventThread.start();
- int robotid = 0;
- //
- Set jsRobot = js1.smembers("robots");
-
- String wokelock = "wokelock";
- for (String key : jsRobot) {
- String tmp = js1.get(wokelock+key);
- if(StringUtil.isEmpty(tmp)){
- robotid = Integer.parseInt(key);
- }
+ int robotid = 0;
+ Set jsRobot = js1.smembers("robots");
+ log.info("jsRobot" + jsRobot);
+ String wokelock = "wokelock";
+ for (String key : jsRobot) {
+ String tmp = js1.get(wokelock + key);
+ if (StringUtil.isEmpty(tmp)) {
+ robotid = Integer.parseInt(key);
}
-
- if(robotid!=0){
- js1.set(wokelock+robotid, String.valueOf(1));
- js1.expire(wokelock+robotid,2);
- TaurusClient client = new TaurusClient(robot_host, "games"+robotid, TaurusClient.ConnectionProtocol.Tcp);
- client.setSession("abbccccd"+robotid+roomid);
- client.connect();
- sleep(1500);
- ITObject params = TObject.newInstance();
- params.putString("roomid",roomid);
- params.putInt("groupid",groupid);
- params.putInt("robotid",robotid);
- System.out.println("ssss");
- System.out.println(client.isConnected());
- log.info("=====================sendRobotData发送前 :"+roomid+"robotid:"+robotid);
- Message msg= client.send("225", params, response -> {
- System.out.println("abcd");
- });
- log.info("=====================sendRobotData发送了 :"+roomid+"robotid:"+robotid);
- sleep(10000);
- eventThread.setDaemon(false);
- client.killConnection();
- }
- eventThread.yield();
- log.info("sendRobotData :"+roomid+"robotid:"+robotid);
- js1.close();
- }catch (Exception e){
- js1.close();
- }finally {
- js1.close();
}
- return "执行结果";
- });
+
+
+// int robotid = 0;
+// Map jsRobot = js1.hgetAll("{robot426149}" + gameId);
+// String wokelock = "wokelock";
+// for (String key : jsRobot.keySet()) {
+// String tmp = js1.get(wokelock + key);
+// if (StringUtil.isEmpty(tmp)) {
+// robotid = Integer.parseInt(key);
+// break;
+// }
+// }
+
+ if (robotid == 0) {
+ log.info("sendRobotData 没有可用机器人 roomid:" + roomid);
+ return null;
+ }
+
+ //设置机器人占用标记
+ js1.set(wokelock + robotid, String.valueOf(1));
+ js1.expire(wokelock + robotid, 2);
+
+// js1.expire(wokelock + robotid, 900);
+
+ //通过 HTTP 同步调用机器人服务的 225 协议入口
+ sleep(1000);
+ String url = buildRobotHttpUrl(robot_host);
+ String body = buildJoinRoomBody(robotid, roomid, groupid);
+ String resp = httpPostJson(url, body, 5000);
+ log.info("sendRobotData roomid:" + roomid + " robotid:" + robotid + " resp:" + resp);
+ } catch (Exception e) {
+ log.error("sendRobotData 异常 roomid:" + roomid, e);
+ } finally {
+ js1.close();
+ }
//client.killConnection();
return null;
}
+
+ /**
+ * 根据机器人 TCP 地址推导 HTTP URL
+ * 规则:HTTP 端口 = TCP 端口 + 1000(与 robot_mj_hz 的 Config.HTTP_SERVER_PORT 一致)
+ * 例:robot_host="192.168.0.32:8722" → "http://192.168.0.32:9722/robot/joinRoom"
+ */
+ private static String buildRobotHttpUrl(String robot_host) {
+ String host;
+ int tcpPort;
+ int colonIdx = robot_host.indexOf(':');
+ if (colonIdx > 0) {
+ host = robot_host.substring(0, colonIdx);
+ tcpPort = Integer.parseInt(robot_host.substring(colonIdx + 1));
+ } else {
+ host = robot_host;
+ tcpPort = 8722;
+ }
+ int httpPort = tcpPort + 1000;
+ return "http://" + host + ":" + httpPort + "/robot/joinRoom";
+ }
+
+ /**
+ * 构造 225 协议请求体 JSON
+ */
+ private static String buildJoinRoomBody(int robotid, String roomid, int groupid) {
+ StringBuilder sb = new StringBuilder(64);
+ sb.append("{\"robotid\":").append(robotid)
+ .append(",\"roomid\":\"").append(roomid).append("\"")
+ .append(",\"groupid\":").append(groupid)
+ .append("}");
+ return sb.toString();
+ }
+
+ /**
+ * 通过 JDK HttpURLConnection 发送 POST JSON 请求(同步)
+ * 替代原 TaurusClient + CompletableFuture + eventThread 异步 TCP 方式
+ *
+ * @param urlStr 完整 URL
+ * @param jsonBody 请求体 JSON 字符串
+ * @param timeoutMs 连接与读取超时(毫秒)
+ * @return 响应体字符串;失败时返回错误描述
+ */
+ private static String httpPostJson(String urlStr, String jsonBody, int timeoutMs) {
+ HttpURLConnection conn = null;
+ try {
+ URL url = new URL(urlStr);
+ conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("POST");
+ conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+ conn.setConnectTimeout(timeoutMs);
+ conn.setReadTimeout(timeoutMs);
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+
+ //写入请求体
+ byte[] bodyBytes = jsonBody.getBytes(StandardCharsets.UTF_8);
+ try (OutputStream os = conn.getOutputStream()) {
+ os.write(bodyBytes);
+ os.flush();
+ }
+
+ //读取响应
+ int code = conn.getResponseCode();
+ InputStream is = (code >= 200 && code < 300) ? conn.getInputStream() : conn.getErrorStream();
+ String resp = readAll(is);
+ if (code < 200 || code >= 300) {
+ log.warn("httpPostJson 失败 url:" + urlStr + " code:" + code + " resp:" + resp);
+ return "HTTP " + code + ": " + resp;
+ }
+ return resp;
+ } catch (Exception e) {
+ log.error("httpPostJson 异常 url:" + urlStr, e);
+ return "ERROR:" + e.getMessage();
+ } finally {
+ if (conn != null) {
+ conn.disconnect();
+ }
+ }
+ }
+
+ /**
+ * 读取输入流为字符串
+ */
+ private static String readAll(InputStream in) throws Exception {
+ if (in == null) return "";
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buf = new byte[1024];
+ int n;
+ while ((n = in.read(buf)) > 0) {
+ baos.write(buf, 0, n);
+ }
+ in.close();
+ return new String(baos.toByteArray(), StandardCharsets.UTF_8);
+ }
+
+
/**
* 删除房间
*
diff --git a/web_group/src/main/java/com/group/service/HttpClient.java b/web_group/src/main/java/com/group/service/HttpClient.java
deleted file mode 100644
index 6106162..0000000
--- a/web_group/src/main/java/com/group/service/HttpClient.java
+++ /dev/null
@@ -1,220 +0,0 @@
-package com.group.service;
-
-import com.group.service.TaurusClient.ConnectionProtocol;
-import com.taurus.core.entity.ITObject;
-import com.taurus.core.entity.TObject;
-import com.taurus.core.util.*;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.ConnectException;
-import java.net.HttpURLConnection;
-import java.net.SocketTimeoutException;
-import java.net.URL;
-import java.util.LinkedList;
-import java.util.Queue;
-
-
-/**
- * Http缃戠粶璇锋眰澶勭悊绫?
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class HttpClient implements ISocketLayer {
- private static final Logger logger = Logger.getLogger(HttpClient.class);
- private static final byte[] NULL_BYTES = new byte[0];
- private static final String _Method = "POST";
- private static final String _ContentTypeName = "Content-Type";
- private static final String _ContentType = "application/octet-stream";
- private static final String _Result = "$r";
- private static final String _Param = "$p";
- private static final String _Session = "$s";
- private static final String _Version = "$v";
- String _url;
- String _session_id = "";
-
- final Queue _actionQueue = new LinkedList();
-
-
- public HttpClient(String url) {
- _url = url;
- }
-
- private void __sendMsg(Message msg) {
- byte[] bytes = NULL_BYTES;
- ITObject _data = TObject.newInstance();
- _data.putString(_Session, _session_id);
- _data.putInt(_Version, NetManager.VERSION);
- if (msg.useText && msg.param == null) {
- if (StringUtil.isEmpty(msg.textParam)) {
- msg.param = TObject.newInstance();
- } else {
- try {
- msg.param = TObject.newFromJsonData(msg.textParam);
- } catch (Exception e) {
- msg.param = TObject.newInstance();
- }
- }
- }
- _data.putTObject(_Param, msg.param);
- ByteArray buff = new ByteArray(_data.toBinary());
- try {
- buff.compress();
- } catch (Exception e) {
- logger.error(e);
- }
- bytes = buff.bytes();
-
- __requestAsync(msg, bytes);
- }
-
- private void __requestAsync(final Message msg,byte[] bytes) {
- OutputStream out = null;
- InputStream in = null;
- int code = 500;
- HttpURLConnection conn = null;
- try {
-
- URL realUrl = new URL(_url + msg.command);
- conn = (HttpURLConnection) realUrl.openConnection();
- conn.setDoOutput(true);
- conn.setDoInput(true);
- conn.setRequestProperty(_ContentTypeName, _ContentType);
- conn.setUseCaches(false);// Post 璇锋眰涓嶈兘浣跨敤缂撳瓨
- conn.setRequestMethod(_Method);
- conn.setConnectTimeout(NetManager.TIMEOUT_TIME * 1000);
- conn.setReadTimeout(NetManager.TIMEOUT_TIME * 1000);
- conn.connect();
-
-
- out = conn.getOutputStream();
- out.write(bytes);
- if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
- in = conn.getInputStream();
- bytes = Utils.uncompress(in);
- if (bytes!=null) {
-
- ITObject tem = TObject.newFromBinaryData(bytes);
- int result = tem.getInt(_Result);
-
- if (result == 0) {
- ITObject _param = tem.getTObject(_Param);
- msg.param = _param;
- if(msg.useText) {
- msg.textParam = _param.toJson();
- }
- }
- code = result;
-
- }
- }
- } catch (SocketTimeoutException e) {
- logger.error(e);
- code = 102;
- } catch (ConnectException ex1) {
- logger.error(ex1);
- code = 101;
- } catch (Exception ex2) {
- logger.error(ex2);
- code = 500;
- }finally {
- try {
- if (out != null) {
- out.close();
- }
- } catch (IOException ex) {
- logger.error(ex);
- }
- try {
- if (in != null) {
- in.close();
- }
- }catch (IOException ex) {
- logger.error(ex);
- }
- if(conn!=null) {
- conn.disconnect();
- }
- }
- if (msg.callback != null) {
- final MessageResponse response = new MessageResponse();
- response.messageData = msg;
- response.returnCode = code;
- enqueueActionForDispatch(new Runnable() {
- @Override
- public void run() {
- msg.callback.action(response);
- }
- });
- }
-
- }
-
- @Override
- public void connect(String ip, String game) {
-
- }
-
- @Override
- public void disconnect() {
-
- }
-
- private void enqueueActionForDispatch(Runnable action) {
- synchronized (_actionQueue) {
- _actionQueue.offer(action);
- }
- }
-
- @Override
- public void processEvent() {
- while (true) {
- Runnable myAction;
- synchronized (_actionQueue) {
- if (_actionQueue.size() <= 0) {
- break;
- }
- myAction = _actionQueue.poll();
- }
- myAction.run();
- }
- }
-
- public void write(final Message msg) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- __sendMsg(msg);
- }
- }).start();
- }
-
- public int getAveragePingTime() {
- return 1000;
- }
-
- public void setSession(String session) {
- _session_id = session == null ? StringUtil.Empty : session;
- }
-
- public String getSession() {
- return _session_id;
-
- }
-
- @Override
- public void setOnConnect(ICallback onConnect) {
-
- }
-
- @Override
- public void setOnEvent(ICallback onEvent) {
-
- }
-
- @Override
- public ConnectionProtocol getProtocol() {
- return ConnectionProtocol.Web;
- }
-}
diff --git a/web_group/src/main/java/com/group/service/ISocketLayer.java b/web_group/src/main/java/com/group/service/ISocketLayer.java
deleted file mode 100644
index a28c35b..0000000
--- a/web_group/src/main/java/com/group/service/ISocketLayer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.group.service;
-
-import com.group.service.TaurusClient.ConnectionProtocol;
-import com.taurus.core.util.ICallback;
-
-/**
- * 网络协议处理通用接口
- * @author daixiwei daixiwei15@126.com
- *
- */
-public interface ISocketLayer {
- /**
- * 连接服务器
- * @param ip
- * @param game
- */
- public void connect(String ip, String game);
-
- /**
- * 断开连接
- */
- public void disconnect();
-
- /**
- * 处理事件
- */
- public void processEvent();
-
- /**
- * 发送消息
- * @param msg
- */
- public void write(Message msg);
-
- /**
- * get Protocol type
- * @return
- */
- public ConnectionProtocol getProtocol();
-
- /**
- * 设置连接状态回调
- */
- public void setOnConnect(ICallback onConnect);
-
-
- /**
- * 设置事件消息回调E
- */
- public void setOnEvent(ICallback onEvent);
-
- /**
- * 网络延时
- */
- public int getAveragePingTime();
-
- /**
- * 获取服务器Session字符
- */
- public String getSession();
-
- /**
- * 设置服务器Session字符
- * @param session
- */
- public void setSession(String session);
-}
diff --git a/web_group/src/main/java/com/group/service/Message.java b/web_group/src/main/java/com/group/service/Message.java
deleted file mode 100644
index 11e57d1..0000000
--- a/web_group/src/main/java/com/group/service/Message.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.group.service;
-
-import com.taurus.core.entity.ITObject;
-import com.taurus.core.util.ICallback;
-
-/**
- * 网络协议消息包
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class Message {
- /**
- * 使用文本,不转换ITObject
- */
- public boolean useText;
- /**
- * 网络协议指令Key
- */
- public String command;
-
- /**
- * 参数
- */
- public ITObject param;
- /**
- * 文本数据
- */
- public String textParam;
-
- /**
- * 网络消息回调
- */
- public ICallback callback;
- /**
- * 自定义参数
- */
- public Object data;
- /**
- * 网络包最后写入时间
- */
- public long lastTime;
- /**
- * 网络包返回匹配的GID
- */
- public int gid;
-
-}
diff --git a/web_group/src/main/java/com/group/service/MessageResponse.java b/web_group/src/main/java/com/group/service/MessageResponse.java
deleted file mode 100644
index fa79180..0000000
--- a/web_group/src/main/java/com/group/service/MessageResponse.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.group.service;
-
-/**
- * 缃戠粶娑堟伅鍥炶皟鏁版嵁瀵硅薄
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class MessageResponse {
- /**
- * 娑堟伅鏁版嵁
- */
- public Message messageData;
- /**
- * 杩斿洖缁撴瀯鍊?
- */
- public int returnCode;
-}
diff --git a/web_group/src/main/java/com/group/service/NetManager.java b/web_group/src/main/java/com/group/service/NetManager.java
deleted file mode 100644
index b4c119a..0000000
--- a/web_group/src/main/java/com/group/service/NetManager.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.group.service;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 网络管理对象
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class NetManager {
-
- private static List _clientList = new ArrayList();
- private static Map _clientMap = new HashMap();
-
- /**
- * 网络超时时间
- */
- public static int TIMEOUT_TIME = 10;
- /**
- * 网络版本号
- */
- public static int VERSION = 10;
- public static boolean debug_print = false;
-
- static void addNetClient(TaurusClient net) {
- if (net == null) {
- throw new RuntimeException("TaurusClient is null, it can't be added.");
- }
- if (_clientMap.containsKey(net.getId())) {
- throw new RuntimeException("A client with id: " + net.getId() + " already exists! Controller can't be added: " + net);
- }
- synchronized (_clientList) {
- _clientMap.put(net.getId(), net);
- _clientList.add(net);
- }
-
- }
-
- /**
- * The process events
- */
- public static void processEvents() {
- for (int i = 0; i < _clientList.size(); ++i) {
- TaurusClient nc = _clientList.get(i);
- if (nc._kill){
- synchronized (_clientList) {
- _clientMap.remove(nc.getId());
- _clientList.remove(nc);
- }
- i--;
- continue;
- }else{
- nc.processEvent();
- }
- }
-
- }
-
- /**
- * 返回指定的NetClient
- * @param id
- * @return
- */
- public static TaurusClient getNetClient(int id) {
- for (int i = 0; i < _clientList.size(); ++i) {
- TaurusClient nc = _clientList.get(i);
- if (nc.getId() == id)
- return nc;
- }
- return null;
- }
-
- /**
- * 断开指定连接
- * @param id
- */
- public static void killConnection(int id) {
- for (int i = 0; i < _clientList.size(); ++i) {
- TaurusClient nc = _clientList.get(i);
- if (nc.getId() == id) {
- nc.killConnection();
- synchronized (_clientList) {
- _clientMap.remove(id);
- _clientList.remove(nc);
- }
- break;
- }
- }
- }
-
- /**
- * 断开所有连接
- */
- public static void killAllConnection() {
- synchronized (_clientList) {
- for (TaurusClient nc : _clientList) {
- nc.killConnection();
- }
- _clientList.clear();
- _clientMap.clear();
- }
-
- }
-}
diff --git a/web_group/src/main/java/com/group/service/SocketCode.java b/web_group/src/main/java/com/group/service/SocketCode.java
deleted file mode 100644
index a35b639..0000000
--- a/web_group/src/main/java/com/group/service/SocketCode.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.group.service;
-
-/**
- * Socket code
- * @author daixiwei daixiwei15@126.com
- *
- */
-public enum SocketCode {
- /**
- * 杩炴帴鎴愬姛
- */
- Connect,
- Disconnect,
- /**
- * 鏈煡寮傚父
- */
- Exception,
- /**
- * 杩炴帴鏈嶅姟寮傚父
- */
- ExceptionOnConnect,
- /**
- * 鍙戦€佹暟鎹祦閿欒
- */
- SendError,
- /**
- * 鎺ユ敹鏈嶅姟鍣ㄦ暟鎹祦寮傚父
- */
- ExceptionOnReceive,
- /**
- * 鏈嶅姟鍣ㄨ繛鎺ヨ秴鏃?
- */
- TimeoutDisconnect,
- /**
- * 鏈嶅姟鍣ㄦ柇寮€杩炴帴
- */
- DisconnectByServer,
- /**
- * 瀹㈡埛绔綉缁滃紓甯?
- */
- NetworkException,
- /**
- * 杩炴帴瀹夊叏寮傚父锛屼竴鑸负闃茬伀澧欓樆姝?
- */
- SecurityExceptionOnConnect
-}
diff --git a/web_group/src/main/java/com/group/service/TaurusClient.java b/web_group/src/main/java/com/group/service/TaurusClient.java
deleted file mode 100644
index 016dfde..0000000
--- a/web_group/src/main/java/com/group/service/TaurusClient.java
+++ /dev/null
@@ -1,355 +0,0 @@
-package com.group.service;
-
-import com.group.service.io.SocketEngine;
-import com.taurus.core.entity.ITObject;
-import com.taurus.core.events.Event;
-import com.taurus.core.events.EventDispatcher;
-import com.taurus.core.events.IEventListener;
-import com.taurus.core.util.ICallback;
-import com.taurus.core.util.Logger;
-
-
-import java.util.HashMap;
-import java.util.Map;
-
-
-/**
- * 缃戠粶鏍稿績鍔熻兘澶勭悊绫?
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class TaurusClient {
- private static final Logger logger = Logger.getLogger(TaurusClient.class);
- private int _id;
- private boolean _connect;
- private String _gameId;
- private String _currentIp;
-
- private ISocketLayer _scoket;
- private ThreadManager _threadManager;
-
- private EventDispatcher _dispatcher;
- private Map> _responseMap;
- volatile boolean _kill = false;
- private static int _tempID;
- private int _protocolCompression=100;
-
- private static int _getValidID() {
- return ++_tempID;
- }
-
- /**
- *
- * @param host
- * @param game
- * @param protocol
- */
- public TaurusClient(String host, String game, ConnectionProtocol protocol) {
- ISocketLayer socket = null;
- switch (protocol) {
- case Tcp:
- socket = new SocketEngine(this);
- break;
- case Web:
- socket = new HttpClient(host);
- _connect = true;
- break;
- default:
- socket = new SocketEngine(this);
- break;
- }
- __initialize(host, game, socket);
- }
-
- /**
- *
- * @param host
- * @param game
- * @param socket
- * @param protocol
- */
- public TaurusClient(String host, String game, ISocketLayer socket) {
- __initialize(host, game, socket);
-
- }
-
- /**
- * 娣诲姞浜嬩欢
- * @param eventType
- * @param listener
- */
- public void addEventListener(String eventType, IEventListener listener) {
- _dispatcher.addEventListener(eventType, listener);
- }
-
- /**
- * 绉婚櫎鎵€鏈変簨浠?
- */
- public void removeAllListener() {
- _dispatcher.removeAllListener();
- }
-
- /**
- * 绉婚櫎鎸囧畾浜嬩欢
- * @param eventType
- * @param listener
- */
- public void removeEventListener(String eventType, IEventListener listener) {
- _dispatcher.removeEventListener(eventType, listener);
- }
-
- private void __initialize(String host, String game, ISocketLayer socket) {
- _dispatcher = new EventDispatcher();
- _responseMap = new HashMap>();
- _id = _getValidID();
- NetManager.addNetClient(this);
- _currentIp = host;
- _gameId = game;
- _threadManager = new ThreadManager();
- _threadManager.start();
- _scoket = socket;
- _scoket.setOnConnect(new ICallback() {
- @Override
- public void action(SocketCode code) {
- if (code == SocketCode.Connect)
- _connect = true;
- else
- _connect = false;
- Event evt = new Event(NetClientEvent.Connect);
- evt.setParameter("code", code);
- _dispatcher.dispatchEvent(evt);
- }
- });
- _scoket.setOnEvent(new ICallback() {
- @Override
- public void action(Message msg) {
- if (_connect) {
- Event evt = new Event(NetClientEvent.OnEvent);
- evt.setParameter("msg", msg);
- _dispatcher.dispatchEvent(evt);
- if (NetManager.debug_print){
- String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP";
- String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null");
- logger.debug("Event [" + str + "->" + msg.command + "] data:" + data_str);
- }
- }
- }
- });
- }
-
- /**
- * 杩炴帴鏈嶅姟鍣?
- */
- public void connect() {
- _scoket.connect(_currentIp, _gameId);
- }
-
- /**
- * Kill net connection.
- */
- public void killConnection() {
- removeAllListener();
- _responseMap.clear();
- _threadManager.stop();
- _scoket.disconnect();
- _connect = false;
- _kill = true;
- }
-
- /**
- * 鍙戦€佺綉缁滄秷鎭寘
- * @param msg 娑堟伅鏁版嵁瀵硅薄
- */
- protected void send(Message msg) {
- if (msg == null)
- return;
- if (NetManager.debug_print) {
- String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP";
- String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null");
- str = "Requst [" + str + "->" + msg.command + "] ->data:" + data_str;
- logger.debug(str);
- }
- if (msg.callback != null) {
- _responseMap.put(msg, msg.callback);
- msg.callback = new ICallback() {
-
- @Override
- public void action(MessageResponse response) {
- ICallback callback = _responseMap.get(response.messageData);
- if (callback == null) {
- return;
- }
- if (NetManager.debug_print){
- String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP";
- String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null");
- str = "Response [" + str + "->" + msg.command + "] ->result:"+ response.returnCode + " param:" + data_str;
- logger.debug(str);
- }
- _responseMap.remove(response.messageData);
- callback.action(response);
- }
-
- };
- }
-
- _threadManager.enqueueSend(new ICallback() {
- @Override
- public void action(Message msg) {
- sendData(msg);
- }
- }, msg);
- }
-
-
- /**
- * 鍙戦€佺綉缁滄秷鎭寘
- * @param cmd 缃戠粶鍗忚鎸囦护Key
- * @param param 鍙傛暟
- * @param callback 缃戠粶娑堟伅鍥炶皟
- * @return
- */
- public Message send(String cmd, ITObject param, ICallback callback) {
- Message msg = new Message();
- msg.useText = false;
- msg.command = cmd;
- msg.param = param;
- msg.callback = callback;
- this.send(msg);
- return msg;
- }
-
- /**
- * 鍙戦€佺綉缁滄秷鎭寘
- * @param cmd 缃戠粶鍗忚鎸囦护Key
- * @param text JSON 鏂囨湰
- * @param callback 缃戠粶娑堟伅鍥炶皟
- * @return
- */
- public Message sendText(String cmd, String text, ICallback callback) {
- Message msg = new Message();
- msg.command = cmd;
- msg.textParam = text;
- msg.callback = callback;
- msg.useText = true;
- this.send(msg);
- return msg;
- }
-
- /**
- * 鍙戦€佹暟鎹嚎绋嬫柟娉?
- * @param message
- */
- private void sendData(Message msg) {
- _scoket.write(msg);
- }
-
- /**
- * 澶勭悊浜嬩欢
- */
- void processEvent() {
- if(_scoket!=null) {
- _scoket.processEvent();
- }
- }
-
- /**
- * 娓呯悊鍝嶅簲鍥炶皟
- */
- public void clearResponse() {
- _responseMap.clear();
- }
-
- /**
- * The net client id
- * @return
- */
- public int getId() {
-
- return _id;
-
- }
-
- /**
- * The curren ip
- * @return
- */
- public String getCurrentIp() {
- return _currentIp;
- }
-
- /**
- * The curren Game ID
- * @return
- */
- public String getGameID() {
- return _gameId;
- }
-
- /**
- * 缃戠粶鏄惁宸茶繛鎺?
- * @return
- */
- public boolean isConnected() {
- return _connect;
- }
-
- /**
- * 褰撳墠缃戠粶绫诲瀷
- * @return
- */
- public ConnectionProtocol getProtocol() {
- return _scoket.getProtocol();
- }
-
- /**
- * 缃戠粶寤舵椂
- * @return
- */
- public int getAveragePingTime() {
- return _scoket.getAveragePingTime();
- }
-
- /**
- * 鑾峰彇鏈嶅姟鍣⊿ession瀛楃
- * @return
- */
- public String getSession() {
- return _scoket.getSession();
- }
-
- /**
- * 璁剧疆鏈嶅姟鍣⊿ession瀛楃
- * @param session
- */
- public void setSession(String session) {
- _scoket.setSession(session);
- }
-
- /**
- * 璁剧疆鍘嬬缉闃€鍊?
- * @param protocolCompression
- */
- public void setProtocolCompression(int protocolCompression) {
- _protocolCompression = protocolCompression;
- }
-
- /**
- * 鑾峰彇鍘嬬缉闃€鍊?
- *
- * @return
- */
- public int getProtocolCompression() {
- return _protocolCompression;
- }
-
-
- public static enum ConnectionProtocol {
- Tcp, Web,
- }
-
- public static class NetClientEvent {
- public static final String Connect = "connect";
-
- public static final String OnEvent = "onevent";
- }
-}
diff --git a/web_group/src/main/java/com/group/service/ThreadManager.java b/web_group/src/main/java/com/group/service/ThreadManager.java
deleted file mode 100644
index b9e2078..0000000
--- a/web_group/src/main/java/com/group/service/ThreadManager.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.group.service;
-
-import com.taurus.core.util.ICallback;
-
-import java.util.LinkedList;
-import java.util.Queue;
-import java.util.Stack;
-
-
-
-/**
- * 网络(读/写) 线程管理
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class ThreadManager {
- class MessgaeThread {
- public ICallback _dataDelegate;
-
- public Message _message;
- }
-
- private boolean _running = false;
- private Thread _outThread;
- private boolean _outHasQueuedItems = false;
- private Queue _outThreadQueue = new LinkedList();
- private Object _outQueueLocker = new Object();
- private Stack pool = new Stack();
-
- private MessgaeThread MessgaeThreadGet() {
- if (pool.size() > 0) {
- MessgaeThread msg = pool.pop();
- return msg;
- } else
- return new MessgaeThread();
- }
-
- private void MessgaeThreadReturn(MessgaeThread value) {
- pool.push(value);
- value._dataDelegate = null;
- value._message = null;
- }
-
- private static void sleep(int ms) {
- try {
- Thread.sleep(ms);
- } catch (InterruptedException e) {
-
- }
- }
-
- private void outThread() {
- while (_running) {
- sleep(5);
- if (_outHasQueuedItems) {
- Object obj = _outQueueLocker;
- synchronized (obj) {
- while (_outThreadQueue.size() > 0) {
- MessgaeThread item = _outThreadQueue.poll();
- processOutItem(item);
- }
- _outHasQueuedItems = false;
- }
- }
- }
- }
-
- private void processOutItem(MessgaeThread item) {
- ICallback _dataDelegate = item._dataDelegate;
- Message message = item._message;
- MessgaeThreadReturn(item);
- if (_dataDelegate != null) {
- _dataDelegate.action(message);
- }
- }
-
- public void start() {
- if (_running) {
- return;
- }
- _running = true;
- if (_outThread == null) {
- _outThread = new Thread(new Runnable() {
- @Override
- public void run() {
- outThread();
- }
- });
- _outThread.start();
- _outThread.setName("WriteMessage");
- }
- }
-
- public void stop() {
- Thread thread = new Thread(new Runnable() {
- @Override
- public void run() {
- stopThread();
- }
- });
- thread.start();
- }
-
- private void stopThread() {
- _running = false;
-
- if (_outThread != null) {
- _outThread.interrupt();
- }
- _outThread = null;
- }
-
- public void enqueueSend(ICallback callback, Message message) {
- MessgaeThread hashtable = MessgaeThreadGet();
- hashtable._dataDelegate = callback;
- hashtable._message = message;
- Object obj = _outQueueLocker;
- synchronized (obj) {
- _outThreadQueue.offer(hashtable);
- _outHasQueuedItems = true;
- }
- }
-}
diff --git a/web_group/src/main/java/com/group/service/io/IOHandler.java b/web_group/src/main/java/com/group/service/io/IOHandler.java
deleted file mode 100644
index ce90f90..0000000
--- a/web_group/src/main/java/com/group/service/io/IOHandler.java
+++ /dev/null
@@ -1,251 +0,0 @@
-package com.group.service.io;
-
-import com.group.service.SocketCode;
-import com.taurus.core.entity.ITObject;
-import com.taurus.core.entity.TObject;
-import com.taurus.core.util.ByteArray;
-import com.taurus.core.util.Logger;
-import com.taurus.core.util.Utils;
-
-import java.io.IOException;
-
-/**
- * 鍗忚鍖呭瓧鑺傛祦瑙f瀽
- *
- * @author daixiwei daixiwei15@126.com
- *
- */
-class IOHandler {
- private final Logger logger = Logger.getLogger(IOHandler.class);
- private static final String ACTION_ID = "a";
- private static final String PARAM_ID = "p";
- static final int INT_BYTE_SIZE = 4;
-
- private static final ByteArray EMPTY_BUFFER = new ByteArray();
- private int _skipBytes = 0;
- private ByteArray _buffer;
- private int _expectedLength = -1;
- private boolean _compressed = false;
-
- private SocketEngine _engine;
- private SystemController _controller;
-
- /**
- * 璇诲彇鐘舵€?
- */
- private PacketReadState _readState = PacketReadState.WAIT_NEW_PACKET;
-
- IOHandler(SocketEngine client, SystemController controller) {
- _engine = client;
- _controller = controller;
- }
-
- /**
- *
- * @param data
- * @return
- * @throws IOException
- */
- private ByteArray handleDataSize(ByteArray data) throws Exception {
- int num = data.readInt();
- int pos = INT_BYTE_SIZE;
- if (num != -1) {
- _expectedLength = num;
- data = resizeByteArray(data, pos, data.length() - pos);
- _readState = PacketReadState.WAIT_DATA;
- return data;
- }
- _readState = PacketReadState.WAIT_DATA_SIZE_FRAGMENT;
- _buffer.writeBytes(data.bytes());
- data = EMPTY_BUFFER;
- return data;
- }
-
- /**
- *
- * @param data
- * @return
- * @throws IOException
- */
- private ByteArray handleDataSizeFragment(ByteArray data) throws Exception {
- int count = INT_BYTE_SIZE - _buffer.length();
- if (data.length() >= count) {
- _buffer.writeBytes(data.bytes(), 0, count);
- int num2 = INT_BYTE_SIZE;
- ByteArray array = new ByteArray();
- array.writeBytes(_buffer.bytes(), 0, num2);
- array.position(0);
- int num3 = array.readInt();
- _expectedLength = num3;
- _buffer = new ByteArray();
- _readState = PacketReadState.WAIT_DATA;
- if (data.length() > count) {
- data = resizeByteArray(data, count, data.length() - count);
- return data;
- }
- data = EMPTY_BUFFER;
- return data;
- }
- _buffer.writeBytes(data.bytes());
- data = EMPTY_BUFFER;
- return data;
- }
-
- /**
- *
- * @param data
- * @return
- */
- private ByteArray handleInvalidData(ByteArray data) {
- if (_skipBytes == 0) {
- _readState = PacketReadState.WAIT_NEW_PACKET;
- return data;
- }
- int pos = Math.min(data.length(), _skipBytes);
- data = resizeByteArray(data, pos, data.length() - pos);
- _skipBytes -= pos;
- return data;
- }
-
- /**
- *
- * @param data
- * @return
- */
- private ByteArray handleNewPacket(ByteArray data) throws Exception {
- _buffer = new ByteArray();
- _expectedLength = -1;
- _compressed = data.readByte() > 0;
- data = resizeByteArray(data, 1, data.length() - 1);
- _readState = PacketReadState.WAIT_DATA_SIZE;
- return data;
- }
-
- /**
- *
- * @param data
- * @return
- */
- private ByteArray handlePacketData(ByteArray data) throws Exception {
- int count = _expectedLength - _buffer.length();
- boolean flag = data.length() > count;
- ByteArray array = new ByteArray(data.bytes());
- try {
- if (data.length() >= count) {
- _buffer.writeBytes(data.bytes(), 0, count);
- if (_compressed) {
- _buffer.uncompress();
- }
- dispatchRequest(_buffer);
- _readState = PacketReadState.WAIT_NEW_PACKET;
- } else {
- _buffer.writeBytes(data.bytes());
- }
- if (flag) {
- data = resizeByteArray(data, count, data.length() - count);
- return data;
- }
- data = EMPTY_BUFFER;
- } catch (Exception exception) {
- logger.error("Error handling data ", exception);
- _skipBytes = count;
- _readState = PacketReadState.INVALID_DATA;
- return array;
- }
- return data;
- }
-
- private void dispatchRequest(ByteArray _buffer) throws IOException {
- ITObject requestObject = TObject.newFromBinaryData(_buffer.bytes());
- Packet packet = new Packet();
- if (requestObject.isNull(ACTION_ID)) {
- throw new IOException("Request rejected: No Action ID in request!");
- }
- packet.actionID = requestObject.getByte(ACTION_ID);
- packet.parameters = requestObject.getTObject(PARAM_ID);
- _controller.handlePacket(packet);
- }
-
- /**
- *
- * @param data
- * @throws IOException
- */
- public void onDataRead(ByteArray data) throws IOException {
- if (data.length() == 0) {
- throw new IOException("Unexpected empty packet data: no readable bytes available!");
- }
-
- data.position(0);
- try {
- while (data.length() > 0) {
- if (_readState == PacketReadState.WAIT_NEW_PACKET) {
- data = handleNewPacket(data);
- } else {
- if (_readState == PacketReadState.WAIT_DATA_SIZE) {
- data = handleDataSize(data);
- continue;
- }
- if (_readState == PacketReadState.WAIT_DATA_SIZE_FRAGMENT) {
- data = handleDataSizeFragment(data);
- continue;
- }
- if (_readState == PacketReadState.WAIT_DATA) {
- data = handlePacketData(data);
- continue;
- }
- if (_readState == PacketReadState.INVALID_DATA) {
- data = handleInvalidData(data);
- }
- }
- }
- } catch (Exception e) {
- this.logger.error(e);
- }
-
- }
-
- /**
- *
- * @param packet
- * @throws IOException
- */
- public void onDataWrite(Packet packet) throws IOException {
- ByteArray binData = new ByteArray();
-
- ITObject obj2 = new TObject();
- obj2.putByte(ACTION_ID, (byte) packet.actionID);
- obj2.putTObject(PARAM_ID, packet.parameters);
- byte[] array2 = obj2.toBinary();
- boolean compression = array2.length > _engine.getProtocolCompression();
- if (compression) {
- array2 = Utils.compress(array2);
- }
- binData.writeByte((byte) (compression ? 1 : 0));
- binData.writeInt(array2.length);
- binData.writeBytes(array2);
-
- if (_engine._socket.isConnected()) {
- if (!_engine._socket.send(binData.bytes())) {
- _engine.enqueueStatusCallback(SocketCode.SendError);
- }
- }
- }
-
- /**
- *
- * @param array
- * @param pos
- * @param len
- * @return
- */
- private ByteArray resizeByteArray(ByteArray array, int pos, int len) {
- byte[] dst = new byte[len];
- System.arraycopy(array.bytes(), pos, dst, 0, len);
- return new ByteArray(dst);
- }
-
- static enum PacketReadState {
- WAIT_NEW_PACKET, WAIT_DATA_SIZE, WAIT_DATA_SIZE_FRAGMENT, WAIT_DATA, INVALID_DATA
- }
-}
diff --git a/web_group/src/main/java/com/group/service/io/ISocket.java b/web_group/src/main/java/com/group/service/io/ISocket.java
deleted file mode 100644
index baabdea..0000000
--- a/web_group/src/main/java/com/group/service/io/ISocket.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.group.service.io;
-
-import com.group.service.SocketCode;
-import com.taurus.core.util.Logger;
-import com.taurus.core.util.StringUtil;
-
-/**
- * Socket核心基类
- * @author daixiwei daixiwei15@126.com
- *
- */
-public abstract class ISocket {
- protected static final Logger logger = Logger.getLogger(ISocket.class);
- SocketEngine _engine;
- /**
- * 当前socket状态
- */
- public volatile SocketState state = SocketState.Disconnected;
- /**
- * 服务器地址
- */
- protected String serverAddress;
- /**
- * 服务器端口
- */
- protected int serverPort;
-
- /**
- * 网络链接状态
- * @return
- */
- public boolean isConnected() {
- return state == SocketState.Connected;
- }
-
- public ISocket(SocketEngine peerBase) {
- if (peerBase == null) {
- throw new RuntimeException("Can't init without peer");
- }
- this._engine = peerBase;
- }
-
- public boolean connect() {
- boolean result;
- if (state != SocketState.Disconnected) {
- logger.error("Calling connect when the socket is not disconnected");
- result = false;
- } else if (_engine == null) {
- result = false;
- } else if (!tryParseAddress(_engine.getServerAddress())) {
- logger.error("Failed parsing address: " + _engine.getServerAddress());
- result = false;
- } else {
- result = true;
- }
- return result;
- }
-
- /**
- * 断开连接
- * @return
- */
- public abstract boolean disconnect();
-
- /**
- * 发送流数据
- * @param data
- * @return
- */
- public abstract boolean send(byte[] data);
-
- protected void handleException(SocketCode statusCode) {
- state = SocketState.Disconnecting;
- _engine.enqueueStatusCallback(statusCode);
- _engine.enqueueActionForDispatch(new Runnable() {
- @Override
- public void run() {
- disconnect();
- }
- });
- }
-
- /**
- * 解析网络地址
- * @param addressAndPort
- * @param address
- * @param port
- * @return
- */
- protected boolean tryParseAddress(String addressAndPort) {
- boolean result = true;
- if (StringUtil.isEmpty(addressAndPort)) {
- result = false;
- } else {
- int num = addressAndPort.lastIndexOf(':');
- if (num <= 0) {
- result = false;
- } else if (addressAndPort.indexOf(':') != num && (!addressAndPort.contains("[") || !addressAndPort.contains("]"))) {
- result = false;
- } else {
- serverAddress = addressAndPort.substring(0, num);
- String s = addressAndPort.substring(num + 1);
- try {
- serverPort = Integer.parseInt(s);
- } catch (Exception e) {
- result = false;
- }
- }
- }
- return result;
- }
-
-}
diff --git a/web_group/src/main/java/com/group/service/io/LagMonitor.java b/web_group/src/main/java/com/group/service/io/LagMonitor.java
deleted file mode 100644
index 5eeca79..0000000
--- a/web_group/src/main/java/com/group/service/io/LagMonitor.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.group.service.io;
-
-import com.taurus.core.util.Logger;
-
-import java.io.IOException;
-import java.util.*;
-
-
-/**
- * 网络监听/心跳
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class LagMonitor extends TimerTask {
- private static final Logger logger = Logger.getLogger(LagMonitor.class);
- private int _averagePingTime;
- private Timer _pollTimer;
- private int _queueSize;
- private int _interval;
- private boolean _run;
- private SocketEngine _engine;
- private List _valueQueue;
- private Queue write_queue = new LinkedList();
-
- public LagMonitor(SocketEngine engine, int interval, int queueSize) {
- if (interval < 1) {
- interval = 1;
- }
- _engine = engine;
- _valueQueue = new ArrayList();
- _queueSize = queueSize;
- _pollTimer = new Timer();
- _interval = interval * 1000;
- _averagePingTime = 1000;
- }
-
- public void fnPingPong() {
- long w_time = write_queue.poll();
- long item = System.currentTimeMillis() - w_time;
- if (_valueQueue.size() >= _queueSize) {
- _valueQueue.remove(0);
- }
- _valueQueue.add(item);
- if (_valueQueue.size() == 0) {
- _averagePingTime = 0;
- }
- int num = 0;
- for (int i = 0; i < _valueQueue.size(); ++i) {
- num += _valueQueue.get(i);
- }
- _averagePingTime = (num / _valueQueue.size());
- }
-
- /**
- * 启动监听
- */
- public void start() {
- if (!isRunning()) {
- this._run = true;
- _pollTimer.scheduleAtFixedRate(this, 0, _interval);
- }
- }
-
- /**
- * 停止监听
- */
- public void stop() {
- if (isRunning()) {
- this._run = false;
- _pollTimer.purge();
- }
- }
-
- public void destroy() {
- stop();
- _pollTimer.cancel();
- _pollTimer = null;
- _engine = null;
- }
-
- /**
- * 平均Ping的时间
- * @return
- */
- public int getAveragePingTime() {
- return _averagePingTime;
-
- }
-
- public boolean isRunning() {
- return _run;
-
- }
-
- @Override
- public void run() {
- try {
- _engine._controller.sendPingPong();
- write_queue.offer(System.currentTimeMillis());
- } catch (IOException e) {
- logger.error(e);
- }
- }
-}
diff --git a/web_group/src/main/java/com/group/service/io/Packet.java b/web_group/src/main/java/com/group/service/io/Packet.java
deleted file mode 100644
index 574fce0..0000000
--- a/web_group/src/main/java/com/group/service/io/Packet.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.group.service.io;
-
-import com.taurus.core.entity.ITObject;
-
-/**
- * 网络协议数据包
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class Packet {
-
- /**
- * 协议包ID
- */
- public int actionID;
- /**
- * 参数数据
- */
- public ITObject parameters;
-}
diff --git a/web_group/src/main/java/com/group/service/io/SocketEngine.java b/web_group/src/main/java/com/group/service/io/SocketEngine.java
deleted file mode 100644
index 68e07fb..0000000
--- a/web_group/src/main/java/com/group/service/io/SocketEngine.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package com.group.service.io;
-
-import com.group.service.*;
-import com.group.service.TaurusClient.ConnectionProtocol;
-import com.taurus.core.util.ICallback;
-import com.taurus.core.util.Logger;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.Queue;
-
-/**
- * SocketEngine
- *
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class SocketEngine implements ISocketLayer {
- private static final Logger logger = Logger.getLogger(SocketEngine.class);
-
- ISocket _socket;
- private String _sessionToken;
- private String _serverAddress;
-
- private ICallback _onConnect;
- ICallback _onEvent;
- private Queue _actionQueue = new LinkedList();
-
- SystemController _controller;
- LagMonitor _lagMonitor;
- IOHandler _packetHandler;
- TaurusClient _client;
-
- public SocketEngine(TaurusClient client) {
- _socket = new SocketTcp(this);
- _controller = new SystemController(this);
- _packetHandler = new IOHandler(this, _controller);
- _lagMonitor = new LagMonitor(this, NetManager.TIMEOUT_TIME, 10);
- }
-
- @Override
- public void connect(String ip, String game) {
- _serverAddress = ip;
- _socket.connect();
- }
-
- @Override
- public void disconnect() {
- _socket.disconnect();
- if (_lagMonitor != null)
- _lagMonitor.destroy();
- _lagMonitor = null;
- }
-
- @Override
- public void processEvent() {
- if (_socket.isConnected() && _controller.isTimeOut()) {
- if (_onConnect != null)
- _onConnect.action(SocketCode.TimeoutDisconnect);
- return;
- }
-
- while (true) {
- Runnable myAction;
- synchronized (_actionQueue) {
- if (_actionQueue.size() <= 0) {
- break;
- }
- myAction = _actionQueue.poll();
- }
- myAction.run();
- }
- }
-
- public void write(Message msg) {
- try {
- _controller.sendRequest(msg);
- } catch (IOException e) {
- logger.error(e);
- }
- }
-
- void onStatusChanged(SocketCode statusCode) {
- if (statusCode != SocketCode.Connect) {
- _socket.disconnect();
- this.disconnect();
- }
- System.out.println("status : " + statusCode);
- logger.info("status : " + statusCode);
- if (statusCode == SocketCode.Connect) {
- this.onHandshake();
- } else {
- if (_onConnect != null)
- _onConnect.action(statusCode);
- }
- }
-
- void onHandshake() {
- _controller.refreshTime();
- _lagMonitor.start();
- if (_onConnect != null)
- _onConnect.action(SocketCode.Connect);
- }
-
- void enqueueActionForDispatch(Runnable action) {
- synchronized (_actionQueue) {
- _actionQueue.offer(action);
- }
- }
-
- void enqueueStatusCallback(final SocketCode statusValue) {
- synchronized (_actionQueue) {
- _actionQueue.offer(new Runnable() {
- @Override
- public void run() {
- onStatusChanged(statusValue);
- }
- });
- }
- }
-
-
-
-
- public String getServerAddress() {
- return _serverAddress;
- }
-
- @Override
- public ConnectionProtocol getProtocol() {
- return ConnectionProtocol.Tcp;
- }
-
- public int getAveragePingTime() {
- return _lagMonitor != null ? _lagMonitor.getAveragePingTime() : 1000;
- }
-
- public void setSession(String session) {
- _sessionToken = session == null ? "" : session;
- }
-
- public String getSession() {
- return _sessionToken;
-
- }
-
- @Override
- public void setOnConnect(ICallback onConnect) {
- _onConnect = onConnect;
- }
-
- @Override
- public void setOnEvent(ICallback onEvent) {
- _onEvent = onEvent;
- }
-
- public int getProtocolCompression() {
- return 100;
- }
-}
diff --git a/web_group/src/main/java/com/group/service/io/SocketState.java b/web_group/src/main/java/com/group/service/io/SocketState.java
deleted file mode 100644
index 6b0046e..0000000
--- a/web_group/src/main/java/com/group/service/io/SocketState.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.group.service.io;
-
-/**
- * 缃戠粶鐘舵€佹灇涓?
- * @author daixiwei daixiwei15@126.com
- *
- */
-public enum SocketState{
- Disconnected,
- Connecting,
- Connected,
- Disconnecting
-}
diff --git a/web_group/src/main/java/com/group/service/io/SocketTcp.java b/web_group/src/main/java/com/group/service/io/SocketTcp.java
deleted file mode 100644
index b0d0ee4..0000000
--- a/web_group/src/main/java/com/group/service/io/SocketTcp.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package com.group.service.io;
-
-import com.group.service.NetManager;
-import com.group.service.SocketCode;
-import com.taurus.core.util.ByteArray;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.SocketAddress;
-
-/**
- * Tcp协议 Socket核心类
- * @author daixiwei daixiwei15@126.com
- *
- */
-class SocketTcp extends ISocket {
- private static final int READ_BUFFER_SIZE = 0x1000;
- private byte[] _byteBuffer = new byte[READ_BUFFER_SIZE];
-
- private Socket _connection;
- private final Object _syncer = new Object();
-
- public SocketTcp(SocketEngine npeer) {
- super(npeer);
- }
-
- @Override
- public boolean connect() {
- if (!super.connect()) {
- return false;
- } else {
- state = SocketState.Connecting;
- Thread t = new Thread(new Runnable() {
- @Override
- public void run() {
- connectThread();
- }
- });
- t.setName("mpnet connect thread");
- t.start();
- return true;
- }
- }
-
- private void connectThread() {
- try {
- SocketAddress remoteAddr = new InetSocketAddress(serverAddress, super.serverPort);
- _connection = new Socket();
- _connection.setTcpNoDelay(true);
- _connection.connect(remoteAddr, NetManager.TIMEOUT_TIME * 1000);
- state = SocketState.Connected;
- _engine.enqueueStatusCallback(SocketCode.Connect);
- } catch (Exception ex) {
- try {
- if (_connection != null)
- _connection.close();
- } catch (Exception e) {
- logger.error("Connection close error", e);
- }
- logger.error("Connection error", ex);
- handleException(SocketCode.ExceptionOnConnect);
- return;
- }
- Thread _thrSocketReader = new Thread(new Runnable() {
- @Override
- public void run() {
- __read();
- }
- });
- _thrSocketReader.start();
- }
-
- @Override
- public boolean disconnect() {
- if (state == SocketState.Disconnected)
- return false;
- state = SocketState.Disconnecting;
- synchronized (_syncer) {
- if (_connection != null) {
- try {
- _connection.close();
- } catch (Exception ex) {
- logger.error("Disconnect error", ex);
- }
- _connection = null;
- }
- }
- state = SocketState.Disconnected;
- return true;
- }
-
- @Override
- public boolean send(byte[] data) {
- return __writeSocket(data);
- }
-
- private boolean __writeSocket(byte[] buf) {
- if (_connection == null || state != SocketState.Connected) {
- logger.error("Trying to write to disconnected socket");
- return false;
- } else {
- try {
- OutputStream outStream = _connection.getOutputStream();
- outStream.write(buf);
- outStream.flush();
- } catch (Exception exception2) {
- logger.error("General error writing to socket", exception2);
- handleException(SocketCode.SendError);
- return false;
- }
- }
- return true;
- }
-
- private void __read() {
- int size = 0;
- while (state == SocketState.Connected) {
- try {
- try {
- InputStream inputStream = _connection.getInputStream();
- size = inputStream.read(_byteBuffer);
- } catch (Exception ex) {
- throw new TSocketException(SocketCode.ExceptionOnReceive);
- }
- if (size == 0 || size == -1) {
-// System.out.println("socket----报错--------111111--------");
- throw new TSocketException(SocketCode.DisconnectByServer);
- }
- __handleBinaryData(_byteBuffer, size);
-
- } catch (TSocketException ex3) {
- if (state != SocketState.Disconnecting && state.ordinal() > SocketState.Disconnected.ordinal()) {
- logger.error("Receiving failed.: ", ex3);
- super.handleException(ex3.socketCode);
- }
- } catch (Exception ex4) {
- if (state != SocketState.Disconnecting && state.ordinal() > SocketState.Disconnected.ordinal()) {
- logger.error("Receiving Exception: ", ex4);
- super.handleException(SocketCode.ExceptionOnReceive);
- }
- }
- }
-
- this.disconnect();
- }
-
- private void __handleBinaryData(byte[] buf, int size) throws IOException {
- byte[] dst = new byte[size];
- System.arraycopy(buf, 0, dst, 0, size);
- ByteArray array = new ByteArray(dst);
- _engine._packetHandler.onDataRead(array);
- }
-}
diff --git a/web_group/src/main/java/com/group/service/io/SystemController.java b/web_group/src/main/java/com/group/service/io/SystemController.java
deleted file mode 100644
index ec47b8d..0000000
--- a/web_group/src/main/java/com/group/service/io/SystemController.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package com.group.service.io;
-
-import com.group.service.Message;
-import com.group.service.MessageResponse;
-import com.group.service.NetManager;
-import com.taurus.core.entity.ITObject;
-import com.taurus.core.entity.TObject;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 协议处理控制器
- *
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class SystemController {
- public static final String CONNECT_TOKE = "$t";
- public static final String CONNECT_PROT_COMPRESSION = "$pc";
- public static final String REQUEST_CMD = "$c";
- public static final String REQUEST_GID = "$gi";
- public static final String REQUEST_PARM = "$p";
- public static final String REQUEST_RESULT = "$r";
-
- /**
- * pingpong
- */
- public static final int ACTION_PINGPONG = 0;
- /**
- * 客户端请求
- */
- public static final int ACTION_REQUST_CMD = 1;
- /**
- * 服务器事件消息
- */
- public static final int ACTION_EVENT_CMD = 2;
-
- private SocketEngine _engine;
- private long _lastTime;
- private List _handleList = new ArrayList();
- private int _tempID;
-
- public SystemController(SocketEngine client) {
- _engine = client;
- _lastTime = System.currentTimeMillis();
- }
-
- private int _getValidID() {
- return ++_tempID;
- }
-
-
- public void handlePacket(Packet packet) {
- _lastTime = System.currentTimeMillis();
- switch (packet.actionID) {
- case ACTION_PINGPONG:
- fnPingPong(packet);
- break;
- case ACTION_REQUST_CMD:
- fnOperationResponse(packet);
- break;
- case ACTION_EVENT_CMD:
- fnOperationEvent(packet);
- break;
- }
- }
-
- void sendRequest(Message msg) throws IOException {
- Packet packet = new Packet();
- packet.actionID = SystemController.ACTION_REQUST_CMD;
- ITObject obj = TObject.newInstance();
- obj.putString(SystemController.REQUEST_CMD, msg.command);
- int gid = 0;
- if (msg.callback != null) {
- gid = _getValidID();
- msg.lastTime = System.currentTimeMillis();
- msg.gid = gid;
- synchronized (_handleList) {
- _handleList.add(msg);
- }
- }
- obj.putInt(SystemController.REQUEST_GID, gid);
- obj.putTObject(SystemController.REQUEST_PARM, msg.param);
- packet.parameters = obj;
- _engine._packetHandler.onDataWrite(packet);
- }
-
- void sendPingPong() throws IOException {
- Packet packet = new Packet();
- packet.actionID = SystemController.ACTION_PINGPONG;
- packet.parameters = TObject.newInstance();
- _engine._packetHandler.onDataWrite(packet);
- }
-
- private final void fnOperationResponse(final Packet packet) {
- final int gid = packet.parameters.getInt(REQUEST_GID);
- final int result = packet.parameters.getInt(REQUEST_RESULT);
- ITObject tem = null;
- if (packet.parameters.containsKey(REQUEST_PARM)) {
- tem = packet.parameters.getTObject(REQUEST_PARM);
- }
- final ITObject param = tem;
- _engine.enqueueActionForDispatch(new Runnable() {
- @Override
- public void run() {
- handleOperationResponse(result, gid, param);
- }
- });
- }
-
- private void handleOperationResponse(int result, int gid, ITObject param) {
- Message msg = null;
- int index = 0;
- int len = _handleList.size();
- if (gid > 0) {
- for (int i = 0; i < len; ++i) {
- if (gid == _handleList.get(i).gid) {
- msg = _handleList.get(i);
- index = i;
- break;
- }
- }
- }
-
- if (msg != null) {
- if (msg.callback != null) {
- MessageResponse response = new MessageResponse();
- msg.param = param;
- response.messageData = msg;
- response.returnCode = result;
- msg.callback.action(response);
- }
- synchronized (_handleList) {
- _handleList.remove(index);
- }
- }
- }
-
- private final void fnOperationEvent(Packet packet) {
- final String cmd = packet.parameters.getString(REQUEST_CMD);
- ITObject tem = null;
- if (packet.parameters.containsKey(REQUEST_PARM)) {
- tem = packet.parameters.getTObject(REQUEST_PARM);
- }
- final ITObject param = tem;
- _engine.enqueueActionForDispatch(new Runnable() {
- @Override
- public void run() {
- handleEvent(cmd, param);
- }
- });
- }
-
- void handleEvent(String cmd, ITObject param) {
- Message msg = new Message();
- msg.command = cmd;
- msg.param = param;
- if (_engine._onEvent != null)
- _engine._onEvent.action(msg);
- }
-
-
- private final void fnPingPong(Packet packet) {
- _engine._lagMonitor.fnPingPong();
- }
-
- public boolean isTimeOut() {
- return (System.currentTimeMillis() - _lastTime) / 1000 > NetManager.TIMEOUT_TIME;
- }
-
- public void refreshTime() {
- _lastTime = System.currentTimeMillis();
- }
-
-}
diff --git a/web_group/src/main/java/com/group/service/io/TSocketException.java b/web_group/src/main/java/com/group/service/io/TSocketException.java
deleted file mode 100644
index 3875a23..0000000
--- a/web_group/src/main/java/com/group/service/io/TSocketException.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.group.service.io;
-
-import com.group.service.SocketCode;
-
-/**
- * 缃戠粶閫氫俊寮傚父
- * @author daixiwei daixiwei15@126.com
- *
- */
-public class TSocketException extends Exception{
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- public SocketCode socketCode;
-
- public TSocketException(SocketCode code) {
- socketCode = code;
- }
-
-}
diff --git a/web_group/target/ROOT.war b/web_group/target/ROOT.war
index c50d09c..8e97d2c 100644
Binary files a/web_group/target/ROOT.war and b/web_group/target/ROOT.war differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class
index dc69016..d1cd9f5 100644
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class and b/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$1.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$1.class
deleted file mode 100644
index 69d66ad..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$1.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$2.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$2.class
deleted file mode 100644
index cfa8c19..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$2.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class
deleted file mode 100644
index d9bbfa0..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class
deleted file mode 100644
index d9bdab8..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/Message.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/Message.class
deleted file mode 100644
index f76099a..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/Message.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class
deleted file mode 100644
index 9e7f12e..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class
deleted file mode 100644
index 92ed8bc..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class
deleted file mode 100644
index a0a8443..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$1.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$1.class
deleted file mode 100644
index 1922d9d..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$1.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$2.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$2.class
deleted file mode 100644
index 23d9ecb..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$2.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$3.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$3.class
deleted file mode 100644
index 8c46eaf..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$3.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$4.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$4.class
deleted file mode 100644
index 9a49b30..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$4.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$5.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$5.class
deleted file mode 100644
index 43b7c1f..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$5.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$ConnectionProtocol.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$ConnectionProtocol.class
deleted file mode 100644
index ed70f49..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$ConnectionProtocol.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$NetClientEvent.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$NetClientEvent.class
deleted file mode 100644
index e3c1d6f..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$NetClientEvent.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class
deleted file mode 100644
index 6ea1fa7..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$1.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$1.class
deleted file mode 100644
index be9a347..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$1.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$2.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$2.class
deleted file mode 100644
index 9f390c6..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$2.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$MessgaeThread.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$MessgaeThread.class
deleted file mode 100644
index e3a97cf..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$MessgaeThread.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class
deleted file mode 100644
index 3e68eea..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler$PacketReadState.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler$PacketReadState.class
deleted file mode 100644
index 3c4bbb9..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler$PacketReadState.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class
deleted file mode 100644
index 14f9875..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket$1.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket$1.class
deleted file mode 100644
index 15f9eee..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket$1.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class
deleted file mode 100644
index 52bb737..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class
deleted file mode 100644
index 8452990..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class
deleted file mode 100644
index 4f8fb38..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine$1.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine$1.class
deleted file mode 100644
index 4cd7876..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine$1.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class
deleted file mode 100644
index 0cdb161..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class
deleted file mode 100644
index c6eef02..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$1.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$1.class
deleted file mode 100644
index 0f67447..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$1.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$2.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$2.class
deleted file mode 100644
index 48848f2..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$2.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class
deleted file mode 100644
index 79c7d03..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$1.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$1.class
deleted file mode 100644
index 7298488..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$1.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$2.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$2.class
deleted file mode 100644
index 599e7f7..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$2.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class
deleted file mode 100644
index efff50b..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class b/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class
deleted file mode 100644
index 26374e0..0000000
Binary files a/web_group/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/lib/fastjson2-2.0.43.jar b/web_group/target/ROOT/WEB-INF/lib/fastjson2-2.0.43.jar
new file mode 100644
index 0000000..4c4ccbd
Binary files /dev/null and b/web_group/target/ROOT/WEB-INF/lib/fastjson2-2.0.43.jar differ
diff --git a/web_group/target/ROOT/WEB-INF/lib/httpclient5-5.4.4.jar b/web_group/target/ROOT/WEB-INF/lib/httpclient5-5.4.4.jar
new file mode 100644
index 0000000..15fbd3d
Binary files /dev/null and b/web_group/target/ROOT/WEB-INF/lib/httpclient5-5.4.4.jar differ
diff --git a/web_group/target/ROOT/WEB-INF/lib/httpcore5-5.3.4.jar b/web_group/target/ROOT/WEB-INF/lib/httpcore5-5.3.4.jar
new file mode 100644
index 0000000..44dff04
Binary files /dev/null and b/web_group/target/ROOT/WEB-INF/lib/httpcore5-5.3.4.jar differ
diff --git a/web_group/target/ROOT/WEB-INF/lib/httpcore5-h2-5.3.4.jar b/web_group/target/ROOT/WEB-INF/lib/httpcore5-h2-5.3.4.jar
new file mode 100644
index 0000000..03507de
Binary files /dev/null and b/web_group/target/ROOT/WEB-INF/lib/httpcore5-h2-5.3.4.jar differ
diff --git a/web_group/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar b/web_group/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar
deleted file mode 100644
index 0143c09..0000000
Binary files a/web_group/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar and /dev/null differ
diff --git a/web_group/target/ROOT/WEB-INF/lib/slf4j-api-1.7.36.jar b/web_group/target/ROOT/WEB-INF/lib/slf4j-api-1.7.36.jar
new file mode 100644
index 0000000..7d3ce68
Binary files /dev/null and b/web_group/target/ROOT/WEB-INF/lib/slf4j-api-1.7.36.jar differ
diff --git a/web_group/target/classes/com/group/service/GroupRoomService.class b/web_group/target/classes/com/group/service/GroupRoomService.class
index dc69016..d1cd9f5 100644
Binary files a/web_group/target/classes/com/group/service/GroupRoomService.class and b/web_group/target/classes/com/group/service/GroupRoomService.class differ
diff --git a/web_group/target/classes/com/group/service/HttpClient$1.class b/web_group/target/classes/com/group/service/HttpClient$1.class
deleted file mode 100644
index 69d66ad..0000000
Binary files a/web_group/target/classes/com/group/service/HttpClient$1.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/HttpClient$2.class b/web_group/target/classes/com/group/service/HttpClient$2.class
deleted file mode 100644
index cfa8c19..0000000
Binary files a/web_group/target/classes/com/group/service/HttpClient$2.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/HttpClient.class b/web_group/target/classes/com/group/service/HttpClient.class
deleted file mode 100644
index d9bbfa0..0000000
Binary files a/web_group/target/classes/com/group/service/HttpClient.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/ISocketLayer.class b/web_group/target/classes/com/group/service/ISocketLayer.class
deleted file mode 100644
index d9bdab8..0000000
Binary files a/web_group/target/classes/com/group/service/ISocketLayer.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/Message.class b/web_group/target/classes/com/group/service/Message.class
deleted file mode 100644
index f76099a..0000000
Binary files a/web_group/target/classes/com/group/service/Message.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/MessageResponse.class b/web_group/target/classes/com/group/service/MessageResponse.class
deleted file mode 100644
index 9e7f12e..0000000
Binary files a/web_group/target/classes/com/group/service/MessageResponse.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/NetManager.class b/web_group/target/classes/com/group/service/NetManager.class
deleted file mode 100644
index 92ed8bc..0000000
Binary files a/web_group/target/classes/com/group/service/NetManager.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/SocketCode.class b/web_group/target/classes/com/group/service/SocketCode.class
deleted file mode 100644
index a0a8443..0000000
Binary files a/web_group/target/classes/com/group/service/SocketCode.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient$1.class b/web_group/target/classes/com/group/service/TaurusClient$1.class
deleted file mode 100644
index 1922d9d..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient$1.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient$2.class b/web_group/target/classes/com/group/service/TaurusClient$2.class
deleted file mode 100644
index 23d9ecb..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient$2.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient$3.class b/web_group/target/classes/com/group/service/TaurusClient$3.class
deleted file mode 100644
index 8c46eaf..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient$3.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient$4.class b/web_group/target/classes/com/group/service/TaurusClient$4.class
deleted file mode 100644
index 9a49b30..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient$4.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient$5.class b/web_group/target/classes/com/group/service/TaurusClient$5.class
deleted file mode 100644
index 43b7c1f..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient$5.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient$ConnectionProtocol.class b/web_group/target/classes/com/group/service/TaurusClient$ConnectionProtocol.class
deleted file mode 100644
index ed70f49..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient$ConnectionProtocol.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient$NetClientEvent.class b/web_group/target/classes/com/group/service/TaurusClient$NetClientEvent.class
deleted file mode 100644
index e3c1d6f..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient$NetClientEvent.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/TaurusClient.class b/web_group/target/classes/com/group/service/TaurusClient.class
deleted file mode 100644
index 6ea1fa7..0000000
Binary files a/web_group/target/classes/com/group/service/TaurusClient.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/ThreadManager$1.class b/web_group/target/classes/com/group/service/ThreadManager$1.class
deleted file mode 100644
index be9a347..0000000
Binary files a/web_group/target/classes/com/group/service/ThreadManager$1.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/ThreadManager$2.class b/web_group/target/classes/com/group/service/ThreadManager$2.class
deleted file mode 100644
index 9f390c6..0000000
Binary files a/web_group/target/classes/com/group/service/ThreadManager$2.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/ThreadManager$MessgaeThread.class b/web_group/target/classes/com/group/service/ThreadManager$MessgaeThread.class
deleted file mode 100644
index e3a97cf..0000000
Binary files a/web_group/target/classes/com/group/service/ThreadManager$MessgaeThread.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/ThreadManager.class b/web_group/target/classes/com/group/service/ThreadManager.class
deleted file mode 100644
index 3e68eea..0000000
Binary files a/web_group/target/classes/com/group/service/ThreadManager.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/IOHandler$PacketReadState.class b/web_group/target/classes/com/group/service/io/IOHandler$PacketReadState.class
deleted file mode 100644
index 3c4bbb9..0000000
Binary files a/web_group/target/classes/com/group/service/io/IOHandler$PacketReadState.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/IOHandler.class b/web_group/target/classes/com/group/service/io/IOHandler.class
deleted file mode 100644
index 14f9875..0000000
Binary files a/web_group/target/classes/com/group/service/io/IOHandler.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/ISocket$1.class b/web_group/target/classes/com/group/service/io/ISocket$1.class
deleted file mode 100644
index 15f9eee..0000000
Binary files a/web_group/target/classes/com/group/service/io/ISocket$1.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/ISocket.class b/web_group/target/classes/com/group/service/io/ISocket.class
deleted file mode 100644
index 52bb737..0000000
Binary files a/web_group/target/classes/com/group/service/io/ISocket.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/LagMonitor.class b/web_group/target/classes/com/group/service/io/LagMonitor.class
deleted file mode 100644
index 8452990..0000000
Binary files a/web_group/target/classes/com/group/service/io/LagMonitor.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/Packet.class b/web_group/target/classes/com/group/service/io/Packet.class
deleted file mode 100644
index 4f8fb38..0000000
Binary files a/web_group/target/classes/com/group/service/io/Packet.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SocketEngine$1.class b/web_group/target/classes/com/group/service/io/SocketEngine$1.class
deleted file mode 100644
index 4cd7876..0000000
Binary files a/web_group/target/classes/com/group/service/io/SocketEngine$1.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SocketEngine.class b/web_group/target/classes/com/group/service/io/SocketEngine.class
deleted file mode 100644
index 0cdb161..0000000
Binary files a/web_group/target/classes/com/group/service/io/SocketEngine.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SocketState.class b/web_group/target/classes/com/group/service/io/SocketState.class
deleted file mode 100644
index c6eef02..0000000
Binary files a/web_group/target/classes/com/group/service/io/SocketState.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SocketTcp$1.class b/web_group/target/classes/com/group/service/io/SocketTcp$1.class
deleted file mode 100644
index 0f67447..0000000
Binary files a/web_group/target/classes/com/group/service/io/SocketTcp$1.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SocketTcp$2.class b/web_group/target/classes/com/group/service/io/SocketTcp$2.class
deleted file mode 100644
index 48848f2..0000000
Binary files a/web_group/target/classes/com/group/service/io/SocketTcp$2.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SocketTcp.class b/web_group/target/classes/com/group/service/io/SocketTcp.class
deleted file mode 100644
index 79c7d03..0000000
Binary files a/web_group/target/classes/com/group/service/io/SocketTcp.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SystemController$1.class b/web_group/target/classes/com/group/service/io/SystemController$1.class
deleted file mode 100644
index 7298488..0000000
Binary files a/web_group/target/classes/com/group/service/io/SystemController$1.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SystemController$2.class b/web_group/target/classes/com/group/service/io/SystemController$2.class
deleted file mode 100644
index 599e7f7..0000000
Binary files a/web_group/target/classes/com/group/service/io/SystemController$2.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/SystemController.class b/web_group/target/classes/com/group/service/io/SystemController.class
deleted file mode 100644
index efff50b..0000000
Binary files a/web_group/target/classes/com/group/service/io/SystemController.class and /dev/null differ
diff --git a/web_group/target/classes/com/group/service/io/TSocketException.class b/web_group/target/classes/com/group/service/io/TSocketException.class
deleted file mode 100644
index 26374e0..0000000
Binary files a/web_group/target/classes/com/group/service/io/TSocketException.class and /dev/null differ
diff --git a/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index 6119754..643b752 100644
--- a/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,49 +1,13 @@
-com\group\service\TaurusClient$ConnectionProtocol.class
-com\group\service\ThreadManager$1.class
-com\group\service\TaurusClient$NetClientEvent.class
-com\group\service\io\ISocket$1.class
-com\group\job\UpdatePlayRoomJob.class
-com\group\service\SocketCode.class
-com\group\service\io\SystemController$1.class
-com\group\service\MessageResponse.class
-com\group\service\TaurusClient$5.class
-com\group\MainServer$1.class
-com\group\service\HttpClient$2.class
-com\group\service\ThreadManager$MessgaeThread.class
-com\group\service\io\IOHandler$PacketReadState.class
-com\group\service\HttpClient$1.class
-com\group\service\ThreadManager$2.class
-com\group\service\io\SocketEngine$1.class
-com\group\service\io\Packet.class
-com\group\service\TaurusClient$2.class
-com\group\Protocol.class
-com\group\WebInterceptor.class
-com\group\service\GroupService.class
-com\group\service\io\SocketTcp$2.class
com\group\controller\GroupLogController.class
-com\group\service\TaurusClient.class
-com\group\service\io\SocketTcp.class
-com\group\service\io\LagMonitor.class
-com\group\service\io\SocketTcp$1.class
-com\group\service\Message.class
com\group\service\GroupRoomService.class
-com\group\service\io\TSocketException.class
-com\group\service\ISocketLayer.class
com\group\controller\GroupController.class
-com\group\service\TaurusClient$3.class
-com\group\service\io\ISocket.class
+com\group\Protocol.class
+com\group\job\UpdatePlayRoomJob.class
com\group\controller\GroupRoomController.class
com\group\MainServer.class
-com\group\service\io\IOHandler.class
-com\group\service\io\SystemController.class
-com\group\service\io\SocketState.class
-com\group\service\GroupPublisherService.class
-com\group\service\io\SocketEngine.class
-com\group\service\TaurusClient$4.class
-com\group\service\ThreadManager.class
-com\group\service\HttpClient.class
-com\group\service\io\SystemController$2.class
-com\group\service\TaurusClient$1.class
com\group\service\GroupLogService.class
-com\group\service\NetManager.class
+com\group\WebInterceptor.class
com\group\service\RSAUtils.class
+com\group\MainServer$1.class
+com\group\service\GroupService.class
+com\group\service\GroupPublisherService.class
diff --git a/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 2d457be..b619c3e 100644
--- a/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/web_group/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,29 +1,12 @@
D:\cuican\server\web_group\src\main\java\com\group\WebInterceptor.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\ISocket.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\Packet.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\SocketTcp.java
+D:\cuican\server\web_group\src\main\java\com\group\service\GroupService.java
+D:\cuican\server\web_group\src\main\java\com\group\service\RSAUtils.java
+D:\cuican\server\web_group\src\main\java\com\group\service\GroupLogService.java
D:\cuican\server\web_group\src\main\java\com\group\service\GroupRoomService.java
+D:\cuican\server\web_group\src\main\java\com\group\job\UpdatePlayRoomJob.java
+D:\cuican\server\web_group\src\main\java\com\group\Protocol.java
+D:\cuican\server\web_group\src\main\java\com\group\MainServer.java
D:\cuican\server\web_group\src\main\java\com\group\service\GroupPublisherService.java
D:\cuican\server\web_group\src\main\java\com\group\controller\GroupLogController.java
-D:\cuican\server\web_group\src\main\java\com\group\service\SocketCode.java
-D:\cuican\server\web_group\src\main\java\com\group\service\TaurusClient.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\SocketEngine.java
-D:\cuican\server\web_group\src\main\java\com\group\controller\GroupRoomController.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\LagMonitor.java
-D:\cuican\server\web_group\src\main\java\com\group\job\UpdatePlayRoomJob.java
-D:\cuican\server\web_group\src\main\java\com\group\MainServer.java
D:\cuican\server\web_group\src\main\java\com\group\controller\GroupController.java
-D:\cuican\server\web_group\src\main\java\com\group\service\Message.java
-D:\cuican\server\web_group\src\main\java\com\group\service\ThreadManager.java
-D:\cuican\server\web_group\src\main\java\com\group\service\GroupLogService.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\SystemController.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\IOHandler.java
-D:\cuican\server\web_group\src\main\java\com\group\service\MessageResponse.java
-D:\cuican\server\web_group\src\main\java\com\group\service\ISocketLayer.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\SocketState.java
-D:\cuican\server\web_group\src\main\java\com\group\service\io\TSocketException.java
-D:\cuican\server\web_group\src\main\java\com\group\service\GroupService.java
-D:\cuican\server\web_group\src\main\java\com\group\service\HttpClient.java
-D:\cuican\server\web_group\src\main\java\com\group\service\RSAUtils.java
-D:\cuican\server\web_group\src\main\java\com\group\Protocol.java
-D:\cuican\server\web_group\src\main\java\com\group\service\NetManager.java
+D:\cuican\server\web_group\src\main\java\com\group\controller\GroupRoomController.java