master
fpgajie 2026-02-04 20:48:48 +08:00
parent 582ed95eaf
commit 10f2732bcc
131 changed files with 3731 additions and 86 deletions

View File

@ -5,7 +5,62 @@
</component>
<component name="ChangeListManager">
<list default="true" id="0b5e96d5-7630-407a-8e4f-0ff0311ccd8b" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/HttpClient.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/ISocketLayer.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/Message.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/MessageResponse.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/NetManager.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/SocketCode.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/TaurusClient.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/ThreadManager.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/IOHandler.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/ISocket.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/LagMonitor.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/Packet.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketEngine.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketState.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketTcp.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SystemController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/TSocketException.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT.war" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT.war" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/AccountBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/BaseBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GameBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupMemberBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupPlayBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/AccountCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/BaseCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GameCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupMemberCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupPlayCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/ConsumeCode.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/CountUtil.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/ErrorCode.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/EventType.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/Utility.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/data_cache.jar" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-archiver/pom.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -15,9 +70,9 @@
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
</component>
<component name="ProjectColorInfo"><![CDATA[{
"associatedIndex": 5
}]]></component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 5
}</component>
<component name="ProjectId" id="3976D3jFfFaRPSUxbaPEaUpbzE9" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
@ -26,10 +81,12 @@
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"Application.Main.executor": "Run",
"Maven.web_group [clean].executor": "Run",
"Maven.web_group [install].executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"git-widget-placeholder": "master",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "D:/fengyeserver/xtserver_anchou/game_web/web_group",
"last_opened_file_path": "D:/fengyeserver/xtserver_anchou/game_web/web_group/src/main/java/com/group/service",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
@ -38,6 +95,15 @@
"vue.rearranger.settings.migration": "true"
}
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\fengyeserver\xtserver_anchou\game_web\web_group\src\main\java\com\group\service" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.group.job" />
<recent name="com.group.service" />
</key>
</component>
<component name="RunManager">
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="web_group.Main" />
@ -75,6 +141,8 @@
<option name="presentableId" value="Default" />
<updated>1770034638903</updated>
<workItem from="1770034639979" duration="1384000" />
<workItem from="1770184768302" duration="11751000" />
<workItem from="1770207182971" duration="2004000" />
</task>
<servers />
</component>

View File

@ -12,6 +12,7 @@ import com.group.controller.GroupController;
import com.group.controller.GroupLogController;
import com.group.controller.GroupRoomController;
import com.group.job.UpdatePlayRoomJob;
import com.group.job.UpdateRobotRoomJob;
import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.routes.Extension;
import com.taurus.core.routes.Routes;
@ -106,6 +107,10 @@ public class MainServer extends Extension {
trigger= newTrigger().withIdentity("create_play_room_trigger", "group").withSchedule(cronSchedule("0/3 * * * * ? ")).build();
sched.scheduleJob(job, trigger);
JobDetail robot = newJob(UpdateRobotRoomJob.class).withIdentity("update_robot_room", "group").build();
CronTrigger robottg= newTrigger().withIdentity("update_robot_room_trigger", "group").withSchedule(cronSchedule("0/5 * * * * ? ")).build();
sched.scheduleJob(robot, robottg);
sched.start();
}
catch(Exception e) {

View File

@ -0,0 +1,783 @@
package com.group.job;
import com.data.bean.*;
import com.data.cache.*;
import com.data.util.ErrorCode;
import com.group.service.GroupPublisherService;
import com.taurus.core.entity.ITArray;
import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TArray;
import com.taurus.core.entity.TObject;
import com.taurus.core.plugin.database.DataBase;
import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.util.Logger;
import com.taurus.core.util.MD5;
import com.taurus.core.util.StringUtil;
import com.taurus.core.util.Utils;
import com.taurus.web.WebException;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobKey;
import redis.clients.jedis.Jedis;
import java.io.*;
import java.net.URL;
import java.util.*;
import java.util.concurrent.CompletableFuture;
public class UpdateRobotRoomJob implements Job{
private Logger logger = Logger.getLogger(UpdateRobotRoomJob.class);
public static final String CHANNEL_NAME = "mgr_group";
private static final String CMD_DEL_ROOM="del_room";
private static final String CMD_UPDATE_ROOM="update_room";
public UpdateRobotRoomJob() {
}
private void createPlayRoom(int groupId)
{
String gp_key = GroupCache.genPidsKey(groupId);
Set<String> pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11);
if (pids.size() == 0) {
return;
}
GroupBean gb = GroupCache.getGroup(groupId);
if (gb == null)
{
return;
}
Jedis jedis10 = Redis.use("group1_db10").getJedis();
try {
for (String str : pids) {
int pid = Integer.parseInt(str);
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
if (gpb == null)
continue;
if (gpb.robot_room <= 0)
continue;
try {
Set<String> rooms = null;
Jedis jedis = Redis.use("group1_db11").getJedis();
try {
int min_value = pid * 10000;
int max_value = pid * 10000 + 9999;
String grooms_key = GroupCache.genRoomsKey(groupId);
rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value);
int qfroomnum = 0;
for (String room : rooms) {
List<String> room_list = Redis.use("group1_db0").hmget(room, "fake", "status", "round", "id", "times", "players");
String fake_json = room_list.get(0);
if (fake_json == null) {
continue;
}
qfroomnum++;
String status = room_list.get(1);
if (StringUtil.isEmpty(status)) {
continue;
}
String strRound = room_list.get(2);
if (StringUtil.isEmpty(strRound)) {
continue;
}
int round = Integer.parseInt(strRound);
String roomId = room_list.get(3);
if (StringUtil.isEmpty(roomId)) {
continue;
}
if (round == 0) {
roomUpdateEvent(room, groupId, roomId);
round++;
updateRound(room, groupId, roomId, round);
}
}
if (qfroomnum >= gpb.robot_room || rooms.size() >= 20)
{
continue;
}
String exist = Redis.use("group1_db1").get("robot_exist");
if (StringUtil.isNotEmpty(exist))
{
}
}finally {
jedis.close();
}
}
catch (Exception e)
{
}
}
} finally {
jedis10.close();
}
}
private void updateBlackSpecial(int groupId)
{
Map<String, String> mapString = Redis.use("group1_db1").hgetAll("gods_special");
if (mapString == null)
return;
for (Map.Entry<String, String> entry : mapString.entrySet()) {
String strPlayerId = entry.getKey();
String strPlayerValue = entry.getValue();
int playerId = Integer.parseInt(strPlayerId);
GroupMemberBean gmb = GroupCache.getMember(groupId, playerId);
if (gmb == null)
continue;
if (Redis.use("group1_db1").sismember("gods", strPlayerId) == false)
{
String gm_key = GroupMemberCache.genKey(groupId, playerId);
String black_key = Redis.use("group1_db10").hget(gm_key, "group_black_key");
if (StringUtil.isEmpty(black_key))
{
return;
}
String strblack = Redis.use("group1_db10").hget(black_key, "black");
int black = 0;
if (StringUtil.isNotEmpty(strblack))
{
try {
black = Integer.parseInt(strblack);
if (black == 0)
{
logger.info("sadd gods " + strPlayerId);
Redis.use("group1_db1").sadd("gods", strPlayerId);
String StrWhiteValue = Redis.use("group1_db1").hget("gods_value", strPlayerId);
if (StringUtil.isEmpty(StrWhiteValue))
{
Redis.use("group1_db1").hset("gods_value", strPlayerId, strPlayerValue);
}
}
}
catch (NumberFormatException e) {
black = 0;
}
}
}
}
}
private void updatePlayRoom(int groupId) {
String gp_key = GroupCache.genPidsKey(groupId);
Set<String> pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11);
if (pids.size() == 0) {
return;
}
GroupBean gb = GroupCache.getGroup(groupId);
if (gb == null)
{
return;
}
Jedis jedis10 = Redis.use("group1_db10").getJedis();
try {
for (String str : pids) {
int pid = Integer.parseInt(str);
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
if (gpb == null)
continue;
if (gpb.robot_room <= 0)
continue;
try {
Set<String> rooms = null;
Jedis jedis = Redis.use("group1_db11").getJedis();
try {
int min_value = pid * 10000;
int max_value = pid * 10000 + 9999;
String grooms_key = GroupCache.genRoomsKey(groupId);
rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value);
long time = System.currentTimeMillis() / 1000;
for (String room : rooms) {
List<String> room_list = Redis.use("group1_db0").hmget(room, "fake", "status", "round", "id", "times", "players", "create_time", "fake_existTime");
String roomId = room_list.get(3);
String createtime = room_list.get(6);
/*if (StringUtil.isEmpty(room_list.get(5))&&Integer.parseInt((System.currentTimeMillis() + "").substring(0, 10))>Integer.parseInt(createtime)+30) {
GroupPublisherService.delRoomEvt(groupId, roomId);
jedis.zrem(grooms_key, room);
Redis.use().hset(room, "status", 3 + "");
Redis.use().hincrBy(room, "cache_ver", 1);
Redis.use().expire(room, 20);
logger.error("del 空 room:" + roomId + " player:"+room_list.get(5) + " fake_json:");
continue;
}*/
ITArray players = TArray.newFromJsonData(room_list.get(5));
/*if(players.size()==0) {
//清理空桌
GroupPublisherService.delRoomEvt(groupId, roomId);
jedis.zrem(grooms_key, room);
Redis.use().hset(room, "status", 3 + "");
Redis.use().hincrBy(room, "cache_ver", 1);
Redis.use().expire(room, 20);
logger.error("del 空 room:" + roomId + " player:"+room_list.get(5) + " fake_json:");
continue;
}*/
String fake_json = room_list.get(0);
if (fake_json == null)
{
continue;
}
String status = room_list.get(1);
if(StringUtil.isEmpty(status)) {
continue;
}
String strRound = room_list.get(2);
if(StringUtil.isEmpty(strRound)) {
continue;
}
int round = Integer.parseInt(strRound);
if(StringUtil.isEmpty(roomId)) {
continue;
}
String maxStrRound = (room_list.get(4));
if(StringUtil.isEmpty(maxStrRound)) {
continue;
}
int maxRound = Integer.parseInt(maxStrRound);
if (round == 0) {
roomUpdateEvent(room, groupId, roomId);
round++;
updateRound(room, groupId, roomId, round);
continue;
}
Long createTime = Long.parseLong(room_list.get(6));
Long useTime = time - createTime;
String str_fake_existTime = room_list.get(7);
int fake_existTime = 30;
if (!StringUtil.isEmpty(str_fake_existTime))
{
fake_existTime = Integer.parseInt(str_fake_existTime);
}
if (fake_existTime * round >= useTime)
{
continue;
}
boolean exitGame = false;
if (round >= 1)
{
int fake_hp = (int)(Math.random() * 100000);
int rate = (int)(Math.random() * 100);
for (int i = 0; i < players.size(); i++) {
int player_id = players.getInt(i);
if (i % 2 == 0)
{
if (rate < 50)
{
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", fake_hp);
}
else {
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", -fake_hp);
}
}
else {
if (rate < 50)
{
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", -fake_hp);
}
else {
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", fake_hp);
}
}
String fakeHp = Redis.use("group1_db10").hget("fake_"+player_id, "fake_hp");
if (!StringUtil.isEmpty(fakeHp))
{
long curFakeHp = Long.parseLong(fakeHp);
if (curFakeHp <= 1000)
{
curFakeHp = (long)(Math.random() * 10000000);
Redis.use("group1_db10").hset("fake_"+player_id, "fake_hp", Long.toString(curFakeHp));
exitGame = true;
break;
}
}
}
}
round++;
if (round > maxRound || exitGame)
{
for (int i = 0; i < players.size(); i++) {
int player_id = players.getInt(i);
Redis.use("group1_db1").srem("used_robot", Integer.toString(player_id));
Redis.use("group1_db1").sadd("free_robot", Integer.toString(player_id));
}
GroupPublisherService.delRoomEvt(groupId, roomId);
jedis.zrem(grooms_key, room);
Redis.use().hset(room, "status", 3 + "");
Redis.use().hincrBy(room, "cache_ver", 1);
Redis.use().expire(room, 20);
logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json);
continue;
}
updateRound(room, groupId, roomId, round);
}
}finally {
jedis.close();
}
}
catch (Exception e)
{
}
}
} finally {
jedis10.close();
}
}
/**解散时间*/
private static final String[] DISMISS_TIME = {"30","60","90","180"};
/**踢出时间*/
private static final String[] KICK_TIME = {"30","60","120","180"};
/**
* redis
*/
private void updateRound(String roomKey, int groupId,String roomid, int round) {
Redis.use().hset(roomKey, "round", Integer.toString(round));
roomUpdateEvent(roomKey, groupId, roomid);
}
/**
* list to TArray
* @param list
* @return
*/
public static final ITArray toTArray(List<Integer> list) {
ITArray result = new TArray();
for (Integer card : list) {
result.addInt(card);
}
return result;
}
/**
* redis
*/
public void updateRedisMap(int groupId, String roomId, String roomKey, Map<String, String> redis_room_map, int maxPlayers) {
Map<Integer, Integer> playerMapBySeat = new HashMap<Integer, Integer>();
for(int i = 1; i <= maxPlayers; i++)
{
playerMapBySeat.put(i, getRobot(maxPlayers));
}
Iterator<Map.Entry<Integer, Integer>> it = playerMapBySeat.entrySet().iterator();
List<Integer> seat_list = new ArrayList<>();
List<Integer> player_list = new ArrayList<>();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) it.next();
seat_list.add(entry.getKey());
player_list.add(entry.getValue());
}
redis_room_map.put("players", toTArray(player_list).toJson());
redis_room_map.put("seats", toTArray(seat_list).toJson());
Redis.use().hmset(roomKey, redis_room_map);
updateRound(roomKey, groupId, roomId, 0);
}
/**
*
*/
public void roomUpdateEvent(String roomKey, int groupId,String roomid) {
Redis.use("group1_db0").hincrBy(roomKey, "cache_ver", 1);
updateRoomEvt(groupId, roomid);
}
/**
*
* @param groupId
* @param roomid
*/
public static void updateRoomEvt(int groupId,String roomid) {
if(groupId == 0)return;
ITObject data = TObject.newInstance();
data.putInt("gid", groupId);
data.putUtfString("roomid", roomid);
data.putUtfString("cmd", CMD_UPDATE_ROOM);
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
}
@Override
public void execute(JobExecutionContext context) {
JobKey jobKey = context.getJobDetail().getKey();
if(jobKey.getName().equals("update_robot_room") ) {
}else if(jobKey.getName().equals("create_robot_room") ) {
createRobotRoom();
}
}
public void createRobotRoom() {
//1、获取对应的机器人id
Jedis js2 = Redis.use("group1_db2").getJedis();
try{
int robotid = 0;
Map<String,String> jsRobot = js2.hgetAll("gallrobot");
for (String key : jsRobot.keySet()) {
if(Integer.parseInt(jsRobot.get(key))==0){
robotid = Integer.parseInt(key);
}
}
}catch (Exception e) {
e.printStackTrace();
}finally {
js2.close();
}
}
public int getRobot(int maxPlayers)
{
long freeRobotNum = Redis.use("group1_db1").scard("free_robot");
if (freeRobotNum < maxPlayers)
{
long useRobotNum = Redis.use("group1_db1").scard("used_robot");
if (useRobotNum >= 100)
{
logger.warn("robot not enough, cur used robot " + useRobotNum);
}
try {
createRobot();
freeRobotNum = Redis.use("group1_db1").scard("free_robot");
if (freeRobotNum < maxPlayers)
{
logger.error("create robot failed............");
return 0;
}
}
catch (Exception e)
{
logger.error(e);
}
}
try {
while(freeRobotNum > 0)
{
String strRobotId = Redis.use("group1_db1").spop("free_robot");
freeRobotNum = Redis.use("group1_db1").scard("free_robot");
if (StringUtil.isEmpty(strRobotId))
{
createRobot();
continue;
}
else {
AccountBean acc_bean = AccountCache.getAccount(Integer.parseInt(strRobotId));
if (acc_bean != null)
{
URL url = null;
try {
url = new URL(acc_bean.portrait);
InputStream in = url.openStream();
String jsonStr = inputStreamToString(in);
String md5 = MD5.getInstance().getHash(jsonStr);
if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") )
{
//logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5);
url = null;
}
//logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5);
} catch (Exception e1) {
url = null;
}
if (url == null)
{
logger.error("robot head error, this robot:"+ strRobotId + " will not use");
continue;
}
}
else {
continue;
}
}
Redis.use("group1_db1").sadd("used_robot", strRobotId);
int robotId = Integer.parseInt(strRobotId);
String fakeHp = Redis.use("group1_db10").hget("fake_"+strRobotId, "fake_hp");
if (StringUtil.isEmpty(fakeHp))
{
int fake_hp = (int)(Math.random() * 10000000);
Redis.use("group1_db10").hset("fake_"+strRobotId, "fake_hp", Integer.toString(fake_hp));
}
return robotId;
}
}
catch (Exception e)
{
logger.error(e);
}
return 0;
}
/**
*
* @throws Exception
*/
public final void createRobot() throws Exception {
int num = 100;
int mng = 9999;
String listSql = "select * from old_account";
ITArray resultArray = DataBase.use().executeQueryByTArray(listSql);
ArrayList<String> nameList = new ArrayList<>();
ArrayList<String> headList = new ArrayList<>();
for(int i = 0; i < resultArray.size(); i++)
{
ITObject userData = resultArray.getTObject(i);
String nick = userData.getUtfString("nick");
nameList.add(nick);
String head = userData.getUtfString("portrait");
headList.add(head);
}
Math.random();
Collections.shuffle(nameList);
Collections.shuffle(headList);
for(int i = 0; i < num; i++)
{
String sql = "";
int accountid = create_register(mng, "xx123456xx", nameList, headList);
AccountBean acc_bean = AccountCache.getAccount(accountid);
if (acc_bean == null)
{
sql = String.format("SELECT * FROM account WHERE id ='%d'",
accountid);
ITArray resultArray2 = DataBase.use().executeQueryByTArray(sql);
if(resultArray2.size() ==0) {
throw new WebException(ErrorCode._FAILED);
}
ITObject userData = resultArray2.getTObject(0);
UpdateUserData(userData, accountid);
acc_bean = AccountCache.getAccount(accountid);
}
Redis.use("group1_db1").sadd("free_robot", Integer.toString(acc_bean.id));
int fake_hp = (int)(Math.random() * 10000000);
Redis.use("group1_db10").hset("fake_"+acc_bean.id, "fake_hp", Integer.toString(fake_hp));
}
}
/**
*
* @return
* @throws Exception
*/
private final int UpdateUserData(ITObject reqData,long id) throws Exception {
ITObject userData = TObject.newInstance();
userData.putInt("id", (int)id);
userData.putUtfString("acc", reqData.getUtfString("acc"));
userData.putUtfString("portrait", reqData.getUtfString("portrait"));
userData.putUtfString("nick", reqData.getUtfString("nick"));
int sex = reqData.getInt("sex");
if(sex == 0) {
sex = 1;
reqData.putInt("sex", sex);
}
userData.putInt("sex", sex);
userData.putInt("mng", 0);
userData.putInt("type", 0);
if(reqData.containsKey("diamo")) {
userData.putInt("diamo", reqData.getInt("diamo"));
}
userData.putInt("invitation", 1);
updateSession(userData, (int) id);
return (int)id;
}
private static String updateSession(ITObject userData, int id) {
String session = AccountCache.genKey(id);
Map<String, String> map = new HashMap<String, String>();
Utils.objectToMap(userData, map);
Jedis jedis0 = Redis.use("group1_db0").getJedis();
try {
jedis0.hmset(session, map);
BaseCache.updateCacheVer(jedis0, session);
}finally {
jedis0.close();
}
return session;
}
/**
*
* @description:
* @author: Jeff
* @date: 20191215
* @param inputStream
* @return
*/
private static String inputStreamToString(InputStream inputStream) {
StringBuffer buffer = new StringBuffer();
InputStreamReader inputStreamReader;
try {
inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
// 释放资源
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}
private final int create_register(int mng, String password, ArrayList<String> nickList, ArrayList<String> headList) throws Exception {
int count = 0;
long id = 0;
ArrayList<String> list = new ArrayList<>();
for(int i = 0; i < 10; i++)
{
String strId = Redis.use("group1_db1").rpop("free_account");
if (StringUtil.isEmpty(strId))
{
break;
}
list.add(strId);
}
//logger.info("free_account:"+list.toString());
Collections.shuffle(list);
do {
id = Long.parseLong(list.remove(0));
String sql = "SELECT id FROM account WHERE id =" + id;
ITArray resultArray = DataBase.use().executeQueryByTArray(sql);
if (resultArray.size() == 0)
{
break;
}
}while(count++ <= 10);
for(int i = 0; i < list.size(); i++)
{
Redis.use("group1_db1").lpush("free_account", list.get(i));
}
if (id == 0)
{
throw new WebException(ErrorCode._FAILED);
}
ITObject userData = TObject.newInstance();
userData.putInt("id", (int)id);
userData.putUtfString("acc", "" + id);
userData.putUtfString("portrait", "");
while (headList.size() > 0)
{
String head = null;
try {
head = headList.remove(0);
URL url = new URL(head);
InputStream in = url.openStream();
String jsonStr = inputStreamToString(in);
String md5 = MD5.getInstance().getHash(jsonStr);
logger.info("robot:" + id + " head:" + head + " md5:" + md5);
if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") )
{
head = null;
}
} catch (Exception e1) {
head = null;
}
if (head != null)
{
userData.putUtfString("portrait", head); //头像
break;
}
}
String nick = "";
if (nickList.size() > 0)
{
nick = nickList.remove(0);
}
nick = nick.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5]", " ");
userData.putUtfString("nick", nick);
int sex = 1;
if(sex == 0) {
sex = 1;
}
userData.putInt("sex", sex);
userData.putInt("diamo", 0);
userData.putInt("mng", 0);
userData.putInt("regTime", mng);
userData.putInt("type", 0);
userData.putUtfString("password", Utils.getMD5Hash(password));
long reg_time = System.currentTimeMillis() / 1000;
userData.putLong("reg_time", reg_time);
logger.info("create robot account:"+userData.toJson()+" password:" + password);
int result = DataBase.use().insert("account", userData);
if (result == -1) {
throw new WebException(ErrorCode._FAILED);
}
userData.putInt("invitation", 1);
String session = updateSession(userData, (int) id);
return (int)id;
}
}

View File

@ -1,6 +1,7 @@
package com.group.service;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import com.data.bean.*;
import com.data.cache.AccountCache;
@ -17,6 +18,7 @@ import com.taurus.core.entity.TArray;
import com.taurus.core.entity.TObject;
import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.plugin.redis.RedisLock;
import com.taurus.core.util.ICallback;
import com.taurus.core.util.Logger;
import com.taurus.core.util.StringUtil;
import com.taurus.web.WebException;
@ -24,6 +26,8 @@ import com.taurus.web.WebException;
import jdk.nashorn.internal.objects.Global;
import redis.clients.jedis.Jedis;
import static java.lang.Thread.sleep;
public class GroupRoomService {
private static final Logger log = Logger.getLogger(GroupRoomService.class);
@ -571,6 +575,7 @@ public class GroupRoomService {
try {
ITObject resData = publicJoinRoom(groupId,session, room_key,platform);
sendRobotData(resData.getString("room_id"),groupId);
Jedis jedis11 = Redis.use("group1_db11").getJedis();
jedis11.zremrangeByScore(grooms_key, 0, 0);
jedis11.close();
@ -584,7 +589,75 @@ public class GroupRoomService {
}
}
/**
* //发起机器人请求
* @return
*/
public static ITObject sendRobotData(String roomid,int groupid){
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
System.out.println("sendRobotData");
// 执行任务
Jedis js1 = Redis.use("group1_db2").getJedis();
try {
Thread eventThread = new Thread(() -> {
while (true) {
NetManager.processEvents();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
break;
} catch (Exception e) {
}
}
}, "tstse");
eventThread.setDaemon(true); // 设置为守护线程
eventThread.start();
int robotid = 0;
//
Map<String,String> jsRobot = js1.hgetAll("gallrobot");
for (String key : jsRobot.keySet()) {
if(Integer.parseInt(jsRobot.get(key))==0){
robotid = Integer.parseInt(key);
}
}
if(robotid!=0){
TaurusClient client = new TaurusClient("192.168.0.32:8701", "games", TaurusClient.ConnectionProtocol.Tcp);
client.setSession("abbccccd");
client.connect();
sleep(2000);
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());
Message msg= client.send("225", params, response -> {
System.out.println("abcd");
});
sleep(10000);
eventThread.stop();
js1.hset("g{330800}:robot",robotid+"", String.valueOf(1));
}
}catch (Exception e){
}finally {
js1.close();
}
return "执行结果";
});
//client.killConnection();
return null;
}
/**
*
* @param groupId
@ -620,6 +693,8 @@ public class GroupRoomService {
jedis.close();
}
boolean isWhite = false;
boolean isBlack = false;
boolean xingyuhao = false;
@ -1022,6 +1097,8 @@ public class GroupRoomService {
String key = createGroupRoom(session, groupId, pid);
resData = publicJoinRoom(groupId,session, key,platform);
}
sendRobotData(resData.getString("room_id"),groupId);
Jedis jedis11 = Redis.use("group1_db11").getJedis();
try {
jedis11.zremrangeByScore(grooms_key, 0, 0);

View File

@ -0,0 +1,220 @@
package com.group.service;
import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TObject;
import com.taurus.core.util.*;
import com.group.service.TaurusClient.ConnectionProtocol;
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<Runnable> _actionQueue = new LinkedList<Runnable>();
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<SocketCode> onConnect) {
}
@Override
public void setOnEvent(ICallback<Message> onEvent) {
}
@Override
public ConnectionProtocol getProtocol() {
return ConnectionProtocol.Web;
}
}

View File

@ -0,0 +1,67 @@
package com.group.service;
import com.taurus.core.util.ICallback;
import com.group.service.TaurusClient.ConnectionProtocol;
/**
*
* @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<SocketCode> onConnect);
/**
* E
*/
public void setOnEvent(ICallback<Message> onEvent);
/**
*
*/
public int getAveragePingTime();
/**
* Session
*/
public String getSession();
/**
* Session
* @param session
*/
public void setSession(String session);
}

View File

@ -0,0 +1,47 @@
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<MessageResponse> callback;
/**
*
*/
public Object data;
/**
*
*/
public long lastTime;
/**
* GID
*/
public int gid;
}

View File

@ -0,0 +1,17 @@
package com.group.service;
/**
*
* @author daixiwei daixiwei15@126.com
*
*/
public class MessageResponse {
/**
*
*/
public Message messageData;
/**
* ?
*/
public int returnCode;
}

View File

@ -0,0 +1,107 @@
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<TaurusClient> _clientList = new ArrayList<TaurusClient>();
private static Map<Integer, TaurusClient> _clientMap = new HashMap<Integer, TaurusClient>();
/**
*
*/
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();
}
}
}

View File

@ -0,0 +1,46 @@
package com.group.service;
/**
* Socket code
* @author daixiwei daixiwei15@126.com
*
*/
public enum SocketCode {
/**
*
*/
Connect,
Disconnect,
/**
*
*/
Exception,
/**
*
*/
ExceptionOnConnect,
/**
*
*/
SendError,
/**
*
*/
ExceptionOnReceive,
/**
* ?
*/
TimeoutDisconnect,
/**
*
*/
DisconnectByServer,
/**
* ?
*/
NetworkException,
/**
* ?
*/
SecurityExceptionOnConnect
}

View File

@ -0,0 +1,354 @@
package com.group.service;
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 com.group.service.io.SocketEngine;
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<Message, ICallback<MessageResponse>> _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<Message, ICallback<MessageResponse>>();
_id = _getValidID();
NetManager.addNetClient(this);
_currentIp = host;
_gameId = game;
_threadManager = new ThreadManager();
_threadManager.start();
_scoket = socket;
_scoket.setOnConnect(new ICallback<SocketCode>() {
@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<Message>() {
@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<MessageResponse>() {
@Override
public void action(MessageResponse response) {
ICallback<MessageResponse> 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<Message>() {
@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<MessageResponse> 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<MessageResponse> 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";
}
}

View File

@ -0,0 +1,123 @@
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<Message> _dataDelegate;
public Message _message;
}
private boolean _running = false;
private Thread _outThread;
private boolean _outHasQueuedItems = false;
private Queue<MessgaeThread> _outThreadQueue = new LinkedList<MessgaeThread>();
private Object _outQueueLocker = new Object();
private Stack<MessgaeThread> pool = new Stack<MessgaeThread>();
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<Message> _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<Message> callback, Message message) {
MessgaeThread hashtable = MessgaeThreadGet();
hashtable._dataDelegate = callback;
hashtable._message = message;
Object obj = _outQueueLocker;
synchronized (obj) {
_outThreadQueue.offer(hashtable);
_outHasQueuedItems = true;
}
}
}

View File

@ -0,0 +1,251 @@
package com.group.service.io;
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 com.group.service.SocketCode;
import java.io.IOException;
/**
*
*
* @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
}
}

View File

@ -0,0 +1,113 @@
package com.group.service.io;
import com.taurus.core.util.Logger;
import com.taurus.core.util.StringUtil;
import com.group.service.SocketCode;
/**
* 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;
}
}

View File

@ -0,0 +1,104 @@
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<Long> _valueQueue;
private Queue<Long> write_queue = new LinkedList<Long>();
public LagMonitor(SocketEngine engine, int interval, int queueSize) {
if (interval < 1) {
interval = 1;
}
_engine = engine;
_valueQueue = new ArrayList<Long>();
_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);
}
}
}

View File

@ -0,0 +1,20 @@
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;
}

View File

@ -0,0 +1,160 @@
package com.group.service.io;
import com.taurus.core.util.ICallback;
import com.taurus.core.util.Logger;
import com.group.service.*;
import com.group.service.TaurusClient.ConnectionProtocol;
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<SocketCode> _onConnect;
ICallback<Message> _onEvent;
private Queue<Runnable> _actionQueue = new LinkedList<Runnable>();
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<SocketCode> onConnect) {
_onConnect = onConnect;
}
@Override
public void setOnEvent(ICallback<Message> onEvent) {
_onEvent = onEvent;
}
public int getProtocolCompression() {
return 100;
}
}

View File

@ -0,0 +1,13 @@
package com.group.service.io;
/**
* ?
* @author daixiwei daixiwei15@126.com
*
*/
public enum SocketState{
Disconnected,
Connecting,
Connected,
Disconnecting
}

View File

@ -0,0 +1,156 @@
package com.group.service.io;
import com.taurus.core.util.ByteArray;
import com.group.service.NetManager;
import com.group.service.SocketCode;
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);
}
}

View File

@ -0,0 +1,177 @@
package com.group.service.io;
import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TObject;
import com.group.service.Message;
import com.group.service.MessageResponse;
import com.group.service.NetManager;
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<Message> _handleList = new ArrayList<Message>();
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();
}
}

View File

@ -0,0 +1,23 @@
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;
}
}

View File

@ -43,7 +43,7 @@
<db>
<name>db1</name>
<driverName>com.mysql.cj.jdbc.Driver</driverName>
<jdbcUrl>jdbc:mysql://47.109.55.7:8060/wb_game</jdbcUrl>
<jdbcUrl>jdbc:mysql://8.138.242.190:8060/wb_game</jdbcUrl>
<userName>root</userName>
<password>6KYnXJjGhxNceF8e</password>
</db>
@ -86,15 +86,15 @@
</poolConfig>
<infos>
<info name="group1_db0" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="1" timeout="5000"/>
<info name="group1_db2" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="2" timeout="5000"/>
<info name="group1_db5" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="8" timeout="5000"/>
<info name="group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="9" timeout="5000"/>
<info name="group1_db10" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="10" timeout="5000"/>
<info name="group1_db11" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="11" timeout="5000"/>
<info name="tmp_group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="654sads" port="6479" database="9" timeout="5000"/>
<info name="group1_db0" host="8.138.242.190" password="cssq@2020" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="8.138.242.190" password="cssq@2020" port="6379" database="1" timeout="5000"/>
<info name="group1_db2" host="8.138.242.190" password="cssq@2020" port="6379" database="2" timeout="5000"/>
<info name="group1_db5" host="8.138.242.190" password="cssq@2020" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="8.138.242.190" password="cssq@2020" port="6379" database="8" timeout="5000"/>
<info name="group1_db9" host="8.138.242.190" password="cssq@2020" port="6379" database="9" timeout="5000"/>
<info name="group1_db10" host="8.138.242.190" password="cssq@2020" port="6379" database="10" timeout="5000"/>
<info name="group1_db11" host="8.138.242.190" password="cssq@2020" port="6379" database="11" timeout="5000"/>
<info name="tmp_group1_db9" host="8.138.242.190" password="654sads" port="6479" database="9" timeout="5000"/>
</infos>
</plugin>

View File

@ -1,21 +1,696 @@
02 二月 2026 | 20:18:48,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
02 二月 2026 | 20:18:48,509 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
02 二月 2026 | 20:18:59,004 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:19:00,476 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:2030ms
02 二月 2026 | 20:19:03,346 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1565ms
02 二月 2026 | 20:20:27,855 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1887ms
02 二月 2026 | 20:20:52,593 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:20:53,600 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1450ms
02 二月 2026 | 20:20:56,259 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1680ms
02 二月 2026 | 20:21:10,659 | INFO | qtp391618063-69 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:21:12,068 | INFO | qtp391618063-69 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1869ms
02 二月 2026 | 20:21:15,335 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1619ms
02 二月 2026 | 20:21:40,663 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
02 二月 2026 | 20:21:40,702 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
02 二月 2026 | 20:21:51,048 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:2093ms
02 二月 2026 | 20:22:44,947 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:22:46,082 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1654ms
02 二月 2026 | 20:22:48,345 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1588ms
02 二月 2026 | 20:23:31,313 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_partner_data[{user}:423613] time:2348ms
02 二月 2026 | 20:23:39,990 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41885ms
02 二月 2026 | 20:23:55,533 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41942ms
04 二月 2026 | 14:02:16,795 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:02:16,871 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:02:36,494 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:327197 player:[520191,733468] fake_json:1
04 二月 2026 | 14:02:53,410 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 115777
04 二月 2026 | 14:02:53,782 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:592ms
04 二月 2026 | 14:02:55,261 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:564ms
04 二月 2026 | 14:02:58,063 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:03:00,179 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2491ms
04 二月 2026 | 14:05:22,235 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:689567 player:[870909,285195] fake_json:1
04 二月 2026 | 14:06:08,935 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:340133 player:[990477,148839] fake_json:1
04 二月 2026 | 14:08:46,314 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:135569 player:[108473,992179] fake_json:1
04 二月 2026 | 14:09:21,015 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:780903 player:[658983,223369] fake_json:1
04 二月 2026 | 14:11:41,353 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:783725 player:[395743,608562] fake_json:1
04 二月 2026 | 14:12:50,865 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:672847 player:[505572,446021] fake_json:1
04 二月 2026 | 14:13:40,884 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:347815 player:[277652,455295] fake_json:1
04 二月 2026 | 14:14:40,715 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:459447 player:[232304,893772] fake_json:1
04 二月 2026 | 14:16:05,995 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:16:06,042 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:16:11,683 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:449672 player:[316412,950997] fake_json:1
04 二月 2026 | 14:17:24,569 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:17:24,615 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:17:30,877 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:503519 player:[516400,657879] fake_json:1
04 二月 2026 | 14:18:01,314 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1926ms
04 二月 2026 | 14:18:13,100 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:18:13,151 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:18:24,797 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1644ms
04 二月 2026 | 14:18:36,459 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1603ms
04 二月 2026 | 14:18:42,069 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:18:42,147 | ERROR | mpnet connect thread | service.io.ISocket | | Connection error
java.net.SocketException: Socket operation on nonsocket: configureBlocking
at java.net.DualStackPlainSocketImpl.configureBlocking(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:84)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
at java.net.Socket.connect(Socket.java:606)
at com.group.service.io.SocketTcp.connectThread(SocketTcp.java:53)
at com.group.service.io.SocketTcp.access$000(SocketTcp.java:19)
at com.group.service.io.SocketTcp$1.run(SocketTcp.java:39)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 14:18:43,487 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2110ms
04 二月 2026 | 14:19:16,244 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:323634 player:[768647,268775] fake_json:1
04 二月 2026 | 14:19:40,971 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:911667 player:[161367,296214] fake_json:1
04 二月 2026 | 14:21:15,767 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:266678 player:[609966,945218] fake_json:1
04 二月 2026 | 14:21:19,485 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:21:19,532 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:21:27,883 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:21:29,501 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2010ms
04 二月 2026 | 14:22:17,968 | ERROR | Thread-31 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 14:22:58,394 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:22:58,440 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:23:52,922 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:23:52,970 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:23:55,178 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:23:59,097 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4447ms
04 二月 2026 | 14:24:06,046 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:859644 player:[362003,977049] fake_json:1
04 二月 2026 | 14:24:26,424 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:24:29,831 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3701ms
04 二月 2026 | 14:24:35,853 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:744437 player:[870909,157747] fake_json:1
04 二月 2026 | 14:26:28,897 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:26:28,954 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:26:50,031 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:26:50,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:26:53,790 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:26:57,610 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4168ms
04 二月 2026 | 14:27:15,907 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:309463 player:[914143,198184] fake_json:1
04 二月 2026 | 14:27:25,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:611363 player:[976274,658983] fake_json:1
04 二月 2026 | 14:27:56,632 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:27:56,680 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:28:12,363 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:28:16,139 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4124ms
04 二月 2026 | 14:28:46,192 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:490194 player:[168199,705790] fake_json:1
04 二月 2026 | 14:29:53,423 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:29:53,473 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:29:58,153 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:30:00,291 | ERROR | Thread-30 | group.service.HttpClient | |
java.net.MalformedURLException: no protocol: 192.168.0.32:8701225
at java.net.URL.<init>(URL.java:610)
at java.net.URL.<init>(URL.java:507)
at java.net.URL.<init>(URL.java:456)
at com.group.service.HttpClient.__requestAsync(HttpClient.java:79)
at com.group.service.HttpClient.__sendMsg(HttpClient.java:69)
at com.group.service.HttpClient.access$000(HttpClient.java:24)
at com.group.service.HttpClient$2.run(HttpClient.java:188)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 14:30:01,934 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4393ms
04 二月 2026 | 14:30:21,055 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:594197 player:[301188,957316] fake_json:1
04 二月 2026 | 14:30:36,895 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:30:36,942 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:30:43,221 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:30:50,264 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7463ms
04 二月 2026 | 14:31:30,985 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:789114 player:[232304,689714] fake_json:1
04 二月 2026 | 14:31:37,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:31:37,625 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:33:25,595 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:33:31,811 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6548ms
04 二月 2026 | 14:37:45,470 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:37:45,516 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:37:50,024 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:37:56,823 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7230ms
04 二月 2026 | 14:38:11,950 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:38:11,991 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:38:16,372 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:38:17,961 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2145ms
04 二月 2026 | 14:38:37,794 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:38:37,843 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:38:40,969 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:38:42,312 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1797ms
04 二月 2026 | 14:40:04,825 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:40:04,873 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:40:10,944 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:40:12,679 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2078ms
04 二月 2026 | 14:40:49,971 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:40:50,018 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:40:54,743 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:40:55,015 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:40:56,402 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2063ms
04 二月 2026 | 14:41:25,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:41:25,621 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:41:34,091 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:41:34,366 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:41:36,048 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2456ms
04 二月 2026 | 14:41:53,655 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:41:53,696 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:42:00,246 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:42:00,477 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:42:01,767 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1907ms
04 二月 2026 | 14:42:33,541 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:42:33,586 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:42:36,631 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:42:36,900 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:42:38,256 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1989ms
04 二月 2026 | 14:43:11,250 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:43:11,293 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:43:15,311 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:43:15,516 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:43:17,788 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2934ms
04 二月 2026 | 14:44:34,514 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:44:34,558 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:44:43,945 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:44:44,197 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:44:46,460 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2840ms
04 二月 2026 | 14:47:44,665 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 14:47:44,749 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 14:47:57,185 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:47:57,368 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:47:59,739 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2920ms
04 二月 2026 | 14:48:21,196 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:326ms
04 二月 2026 | 14:48:22,835 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:48:22,953 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:48:25,227 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2807ms
04 二月 2026 | 14:48:43,055 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 14:48:43,055 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 14:49:51,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:49:51,422 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:49:55,976 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:49:56,169 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:49:58,527 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2856ms
04 二月 2026 | 14:51:30,625 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:51:30,669 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:51:36,495 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:51:36,730 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:51:39,127 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2969ms
04 二月 2026 | 14:51:51,896 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:51:51,939 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:51:53,986 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:51:54,273 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:51:56,715 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3083ms
04 二月 2026 | 14:52:26,191 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:52:26,235 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:52:32,446 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:52:32,663 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:52:35,266 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3173ms
04 二月 2026 | 14:52:50,754 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:52:51,050 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:52:53,185 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2741ms
04 二月 2026 | 14:52:57,065 | INFO | qtp391618063-71 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:52:57,271 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 14:52:59,715 | INFO | qtp391618063-71 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3094ms
04 二月 2026 | 14:56:48,302 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:56:48,351 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:56:49,317 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:56:50,885 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2008ms
04 二月 2026 | 14:57:18,494 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:57:18,535 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:57:22,556 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:57:23,981 | ERROR | qtp391618063-67 | taurus.web.WebFilter | |
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at com.taurus.core.entity.TObject.getInt(TObject.java:130)
at com.group.service.GroupRoomService.matchRoom(GroupRoomService.java:1074)
at com.group.controller.GroupRoomController.matchRoom(GroupRoomController.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.taurus.web.TWebServer.handle(TWebServer.java:166)
at com.taurus.web.WebFilter.doFilter(WebFilter.java:58)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1487)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 14:57:23,984 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1725ms
04 二月 2026 | 14:57:46,909 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:57:46,952 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 14:57:48,458 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 14:57:49,489 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1452ms
04 二月 2026 | 14:58:56,219 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 14:58:56,261 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:01:46,558 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 15:01:46,604 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:25:50,587 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 15:25:50,649 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:25:59,065 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:6011ms
04 二月 2026 | 15:26:20,493 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:26:23,973 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4180ms
04 二月 2026 | 15:26:23,981 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:26:43,640 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:26:46,841 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3754ms
04 二月 2026 | 15:26:46,877 | INFO | games | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:27:05,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 15:27:05,503 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:27:12,010 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:27:16,423 | INFO | games2 | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:27:16,432 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:5402ms
04 二月 2026 | 15:27:27,197 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777
04 二月 2026 | 15:27:28,246 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:1314ms
04 二月 2026 | 15:27:28,805 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:1123ms
04 二月 2026 | 15:27:33,399 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:3623ms
04 二月 2026 | 15:28:24,197 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 15:28:24,238 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:28:29,424 | INFO | qtp391618063-59 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:28:33,271 | INFO | games2 | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:28:33,414 | INFO | qtp391618063-59 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4824ms
04 二月 2026 | 15:28:49,649 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 15:28:49,690 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:29:09,405 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 15:29:09,450 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:29:12,556 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:29:15,810 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:29:17,845 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6034ms
04 二月 2026 | 15:30:29,984 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:30:34,002 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:30:35,991 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:8477ms
04 二月 2026 | 15:32:23,530 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:32:23,530 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:33:26,673 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:33:31,203 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:33:33,175 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7215ms
04 二月 2026 | 15:34:23,289 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 15:34:23,331 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 15:34:34,777 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:34:39,613 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:34:41,647 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7796ms
04 二月 2026 | 15:37:11,786 | ERROR | Thread-29 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:37:11,858 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:37:32,358 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:37:37,041 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:37:39,006 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7604ms
04 二月 2026 | 15:38:13,290 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:38:17,915 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:38:20,174 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7592ms
04 二月 2026 | 15:38:21,374 | ERROR | Thread-39 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:38:21,374 | ERROR | Thread-35 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:38:40,019 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:38:43,954 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:38:45,982 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6861ms
04 二月 2026 | 15:42:35,519 | ERROR | Thread-43 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:42:35,539 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:42:53,549 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:42:57,450 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:42:59,447 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7086ms
04 二月 2026 | 15:43:32,392 | ERROR | Thread-51 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:43:32,417 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:43:33,381 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:43:38,078 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:43:39,263 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6690ms
04 二月 2026 | 15:44:37,280 | ERROR | Thread-56 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:44:37,284 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:44:53,697 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:44:57,396 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:44:59,499 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6511ms
04 二月 2026 | 15:45:34,664 | ERROR | Thread-61 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:45:34,676 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:45:45,855 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:45:49,621 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:45:51,697 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6654ms
04 二月 2026 | 15:49:16,689 | ERROR | Thread-66 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:49:16,701 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:49:20,659 | INFO | qtp391618063-124 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:49:24,439 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:49:26,423 | INFO | qtp391618063-124 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6362ms
04 二月 2026 | 15:51:45,966 | INFO | qtp391618063-134 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:51:50,802 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:51:52,722 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7509ms
04 二月 2026 | 15:52:16,160 | INFO | qtp391618063-134 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 15:52:17,103 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1555ms
04 二月 2026 | 15:52:22,556 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:561ms
04 二月 2026 | 15:52:52,871 | ERROR | Thread-80 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:52:52,871 | ERROR | Thread-73 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:53:01,624 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 115777
04 二月 2026 | 15:53:01,955 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:582ms
04 二月 2026 | 15:53:02,420 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:487ms
04 二月 2026 | 15:53:03,682 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:53:05,501 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:53:07,479 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4178ms
04 二月 2026 | 15:53:23,466 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 15:53:24,037 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:793ms
04 二月 2026 | 15:53:24,532 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:493ms
04 二月 2026 | 15:53:27,905 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 15:53:29,579 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 15:53:31,614 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3979ms
04 二月 2026 | 15:54:08,273 | ERROR | Thread-90 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:54:08,273 | ERROR | Thread-85 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 16:01:37,449 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 16:01:37,491 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 16:01:46,031 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:01:46,537 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:647ms
04 二月 2026 | 16:01:47,607 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:463ms
04 二月 2026 | 16:01:50,455 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:379ms
04 二月 2026 | 16:01:53,487 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1054ms
04 二月 2026 | 16:02:01,417 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:02:01,734 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:649ms
04 二月 2026 | 16:02:02,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:02:03,427 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:862ms
04 二月 2026 | 16:02:04,375 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:641ms
04 二月 2026 | 16:02:16,575 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:02:16,897 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:520ms
04 二月 2026 | 16:02:17,492 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:545ms
04 二月 2026 | 16:02:20,677 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:338ms
04 二月 2026 | 16:02:23,547 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:02:25,185 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:02:26,271 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:02:26,630 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:641ms
04 二月 2026 | 16:02:27,232 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:609ms
04 二月 2026 | 16:02:27,306 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4192ms
04 二月 2026 | 16:03:24,217 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:03:24,601 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:653ms
04 二月 2026 | 16:03:24,932 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:03:25,286 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:479ms
04 二月 2026 | 16:03:26,515 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:551ms
04 二月 2026 | 16:03:31,507 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:367ms
04 二月 2026 | 16:03:37,117 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:03:37,537 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:580ms
04 二月 2026 | 16:03:37,998 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:03:38,451 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:587ms
04 二月 2026 | 16:03:39,721 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:495ms
04 二月 2026 | 16:03:45,974 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:377360 player:[456982,141106] fake_json:1
04 二月 2026 | 16:04:05,338 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 16:04:05,391 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 16:04:08,687 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:04:10,863 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:04:12,988 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4795ms
04 二月 2026 | 16:04:16,345 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:648ms
04 二月 2026 | 16:04:22,074 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 16:04:22,132 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 16:04:28,873 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:04:29,261 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:623ms
04 二月 2026 | 16:04:31,394 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:04:33,106 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:04:35,188 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4228ms
04 二月 2026 | 16:04:42,316 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:04:43,136 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1221ms
04 二月 2026 | 16:04:43,737 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:1113ms
04 二月 2026 | 16:04:57,253 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:04:57,552 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:538ms
04 二月 2026 | 16:04:58,471 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:494ms
04 二月 2026 | 16:05:00,314 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:05:00,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:05:00,769 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:805ms
04 二月 2026 | 16:05:01,106 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:500ms
04 二月 2026 | 16:05:21,168 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:500433 player:[503162,658983] fake_json:1
04 二月 2026 | 16:05:51,193 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:376250 player:[296214,457322] fake_json:1
04 二月 2026 | 16:06:27,138 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 16:06:27,151 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 16:07:22,616 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 16:07:22,663 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 16:07:29,364 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:07:31,479 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:07:33,507 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4640ms
04 二月 2026 | 16:08:02,000 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:616587 player:[834603,923379] fake_json:1
04 二月 2026 | 16:08:26,452 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:224143 player:[223369,152827] fake_json:1
04 二月 2026 | 16:09:36,205 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:882695 player:[745978,447305] fake_json:1
04 二月 2026 | 16:09:45,998 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:09:46,542 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:726ms
04 二月 2026 | 16:10:14,431 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:10:14,893 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:813ms
04 二月 2026 | 16:10:57,827 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 16:10:57,876 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
04 二月 2026 | 16:11:21,577 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:147802 player:[857709,689714] fake_json:1
04 二月 2026 | 16:11:41,014 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:165651 player:[268301,608562] fake_json:1
04 二月 2026 | 16:13:15,217 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555
04 二月 2026 | 16:13:15,910 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:850ms
04 二月 2026 | 16:13:18,098 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:472ms
04 二月 2026 | 16:13:20,968 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555
04 二月 2026 | 16:13:21,528 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:693ms
04 二月 2026 | 16:13:35,618 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 16:13:36,431 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:976ms
04 二月 2026 | 16:13:37,882 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:571ms
04 二月 2026 | 16:13:40,953 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:410ms
04 二月 2026 | 16:13:49,204 | INFO | qtp391618063-85 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:13:50,755 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:13:50,985 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:280253 player:[635285,923379] fake_json:1
04 二月 2026 | 16:13:52,767 | INFO | qtp391618063-85 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3965ms
04 二月 2026 | 16:14:03,848 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:750ms
04 二月 2026 | 16:14:05,254 | INFO | qtp391618063-86 | group.controller.GroupController | | jefe_test: 102555
04 二月 2026 | 16:14:05,728 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:653ms
04 二月 2026 | 16:14:10,836 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:14:12,682 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:14:14,745 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:4168ms
04 二月 2026 | 16:15:16,010 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:860116 player:[751231,427087] fake_json:1
04 二月 2026 | 16:15:40,120 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 16:15:40,165 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 16:16:01,506 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:383709 player:[977049,137207] fake_json:1
04 二月 2026 | 16:16:04,352 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1942ms
04 二月 2026 | 16:16:17,091 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1448ms
04 二月 2026 | 16:16:21,085 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:16:22,832 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:16:24,790 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3957ms
04 二月 2026 | 16:18:41,045 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:894419 player:[624684,232304] fake_json:1
04 二月 2026 | 16:18:44,517 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057
04 二月 2026 | 16:18:44,978 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:669ms
04 二月 2026 | 16:18:46,195 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:525057] time:514ms
04 二月 2026 | 16:18:47,452 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057
04 二月 2026 | 16:18:47,829 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:538ms
04 二月 2026 | 16:19:02,221 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 177475
04 二月 2026 | 16:19:02,566 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:177475] time:532ms
04 二月 2026 | 16:19:03,858 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:177475] time:518ms
04 二月 2026 | 16:19:05,761 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:19:08,164 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:19:10,217 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:4696ms
04 二月 2026 | 16:19:40,542 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 16:19:41,933 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 16:19:44,154 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:3868ms
04 二月 2026 | 16:19:46,392 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:113345 player:[380267,870909] fake_json:1
04 二月 2026 | 16:21:15,828 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:755135 player:[992179,657879] fake_json:1
04 二月 2026 | 16:21:25,632 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 16:21:25,714 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
04 二月 2026 | 16:22:11,302 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:669919 player:[733468,560202] fake_json:1
04 二月 2026 | 16:23:35,957 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:109294 player:[977049,971057] fake_json:1
04 二月 2026 | 16:24:15,714 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 16:24:15,786 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
04 二月 2026 | 16:24:36,017 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:728457 player:[426015,950997] fake_json:1
04 二月 2026 | 16:24:45,763 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 16:24:45,774 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
04 二月 2026 | 16:26:15,848 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:751474 player:[176545,909321] fake_json:1
04 二月 2026 | 16:26:45,840 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:580977 player:[772988,380267] fake_json:1
04 二月 2026 | 16:28:11,130 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:742665 player:[624684,287696] fake_json:1
04 二月 2026 | 16:28:20,853 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:965585 player:[807782,153276] fake_json:1
04 二月 2026 | 16:30:26,512 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:417703 player:[446881,745978] fake_json:1
04 二月 2026 | 16:35:18,858 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1
04 二月 2026 | 16:35:18,928 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1
04 二月 2026 | 16:35:25,913 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:787124 player:[268301,426015] fake_json:1
04 二月 2026 | 16:37:16,447 | INFO | qtp391618063-130 | group.controller.GroupController | | jefe_test: 115777
04 二月 2026 | 16:37:16,829 | INFO | qtp391618063-130 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:761ms
04 二月 2026 | 16:37:17,400 | INFO | qtp391618063-131 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:460ms
04 二月 2026 | 16:37:18,220 | INFO | qtp391618063-120 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1273ms
04 二月 2026 | 16:38:16,070 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:578016 player:[997151,768647] fake_json:1
04 二月 2026 | 16:38:31,060 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:133397 player:[117543,893772] fake_json:1
04 二月 2026 | 16:40:11,144 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:372933 player:[325465,193548] fake_json:1
04 二月 2026 | 16:41:15,999 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:142252 player:[298423,990477] fake_json:1
04 二月 2026 | 16:42:06,416 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:451170 player:[559763,265830] fake_json:1
04 二月 2026 | 16:43:46,318 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:400324 player:[693996,362003] fake_json:1
04 二月 2026 | 16:44:11,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:992582 player:[826627,296214] fake_json:1
04 二月 2026 | 16:46:05,988 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:940744 player:[774088,378632] fake_json:1
04 二月 2026 | 16:47:46,149 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:740851 player:[265830,198184] fake_json:1
04 二月 2026 | 17:47:21,143 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1
04 二月 2026 | 17:47:21,726 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1
04 二月 2026 | 17:47:30,880 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1
04 二月 2026 | 17:47:31,682 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1
04 二月 2026 | 17:48:51,277 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:840244 player:[161367,877472] fake_json:1
04 二月 2026 | 17:49:15,965 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330433 player:[455295,771035] fake_json:1
04 二月 2026 | 17:51:40,823 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:786319 player:[805963,582578] fake_json:1
04 二月 2026 | 17:52:40,881 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:795690 player:[132277,733468] fake_json:1
04 二月 2026 | 17:54:30,946 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:487446 player:[394446,772988] fake_json:1
04 二月 2026 | 17:55:11,208 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:569922 player:[755783,893772] fake_json:1
04 二月 2026 | 17:57:10,931 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:849837 player:[291453,987020] fake_json:1
04 二月 2026 | 17:58:00,925 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:846448 player:[461205,909321] fake_json:1
04 二月 2026 | 17:58:18,146 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 17:58:18,189 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 17:59:35,879 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 17:59:35,923 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:18:06,038 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 18:18:06,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:18:33,917 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 18:18:33,957 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:19:52,101 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 18:19:52,140 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:19:57,203 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:944036 player:[198184,991538] fake_json:1
04 二月 2026 | 18:20:11,158 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 18:20:11,199 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:20:16,326 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:754798 player:[285195,152827] fake_json:1
04 二月 2026 | 18:21:29,490 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 18:21:29,536 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:21:37,000 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 115777
04 二月 2026 | 18:21:37,519 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:833ms
04 二月 2026 | 18:21:38,727 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:425ms
04 二月 2026 | 18:21:41,511 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 18:21:43,526 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2377ms
04 二月 2026 | 18:21:43,642 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 18:22:30,000 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 18:22:30,039 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:22:43,143 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777
04 二月 2026 | 18:22:43,526 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:540ms
04 二月 2026 | 18:22:44,751 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:529ms
04 二月 2026 | 18:22:51,739 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2976ms
04 二月 2026 | 18:22:57,859 | INFO | qtp391618063-58 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:392ms
04 二月 2026 | 18:22:59,623 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:508ms
04 二月 2026 | 18:23:01,381 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 18:23:03,479 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2611ms
04 二月 2026 | 18:24:41,930 | INFO | qtp391618063-70 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:510ms
04 二月 2026 | 18:24:45,877 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2077ms
04 二月 2026 | 18:25:28,109 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 18:25:28,154 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 18:25:32,107 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 18:25:33,953 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2354ms
04 二月 2026 | 18:25:34,116 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 20:14:55,906 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 20:14:55,985 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 20:16:12,778 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 20:16:13,139 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:494ms
04 二月 2026 | 20:16:14,678 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:529ms
04 二月 2026 | 20:16:28,771 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:378ms
04 二月 2026 | 20:16:32,422 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 20:16:33,969 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1830ms
04 二月 2026 | 20:17:16,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
04 二月 2026 | 20:17:16,464 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
04 二月 2026 | 20:17:26,220 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 20:17:27,241 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1328ms
04 二月 2026 | 20:19:18,588 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:256ms
04 二月 2026 | 20:19:21,209 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 20:19:22,123 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1320ms
04 二月 2026 | 20:19:22,346 | INFO | tstse | service.io.SocketEngine | | status : Connect
04 二月 2026 | 20:24:25,725 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
com.group.service.io.TSocketException
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 20:24:25,765 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
04 二月 2026 | 20:29:07,054 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 112233
04 二月 2026 | 20:29:07,410 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:496ms
04 二月 2026 | 20:29:16,413 | INFO | qtp391618063-89 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:362ms
04 二月 2026 | 20:29:21,849 | INFO | qtp391618063-78 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
04 二月 2026 | 20:29:23,099 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1436ms
04 二月 2026 | 20:29:23,187 | INFO | tstse | service.io.SocketEngine | | status : Connect

View File

@ -0,0 +1,21 @@
02 二月 2026 | 20:18:48,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
02 二月 2026 | 20:18:48,509 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
02 二月 2026 | 20:18:59,004 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:19:00,476 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:2030ms
02 二月 2026 | 20:19:03,346 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1565ms
02 二月 2026 | 20:20:27,855 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1887ms
02 二月 2026 | 20:20:52,593 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:20:53,600 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1450ms
02 二月 2026 | 20:20:56,259 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1680ms
02 二月 2026 | 20:21:10,659 | INFO | qtp391618063-69 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:21:12,068 | INFO | qtp391618063-69 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1869ms
02 二月 2026 | 20:21:15,335 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1619ms
02 二月 2026 | 20:21:40,663 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
02 二月 2026 | 20:21:40,702 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
02 二月 2026 | 20:21:51,048 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:2093ms
02 二月 2026 | 20:22:44,947 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 423613
02 二月 2026 | 20:22:46,082 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1654ms
02 二月 2026 | 20:22:48,345 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1588ms
02 二月 2026 | 20:23:31,313 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_partner_data[{user}:423613] time:2348ms
02 二月 2026 | 20:23:39,990 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41885ms
02 二月 2026 | 20:23:55,533 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41942ms

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More