add
parent
582ed95eaf
commit
10f2732bcc
|
|
@ -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">{
|
||||
"associatedIndex": 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>
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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: 2019年12月15日
|
||||
* @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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.group.service;
|
||||
|
||||
/**
|
||||
* 缃戠粶娑堟伅鍥炶皟鏁版嵁瀵硅薄
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class MessageResponse {
|
||||
/**
|
||||
* 娑堟伅鏁版嵁
|
||||
*/
|
||||
public Message messageData;
|
||||
/**
|
||||
* 杩斿洖缁撴瀯鍊?
|
||||
*/
|
||||
public int returnCode;
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 鍗忚鍖呭瓧鑺傛祦瑙f瀽
|
||||
*
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
class IOHandler {
|
||||
private final Logger logger = Logger.getLogger(IOHandler.class);
|
||||
private static final String ACTION_ID = "a";
|
||||
private static final String PARAM_ID = "p";
|
||||
static final int INT_BYTE_SIZE = 4;
|
||||
|
||||
private static final ByteArray EMPTY_BUFFER = new ByteArray();
|
||||
private int _skipBytes = 0;
|
||||
private ByteArray _buffer;
|
||||
private int _expectedLength = -1;
|
||||
private boolean _compressed = false;
|
||||
|
||||
private SocketEngine _engine;
|
||||
private SystemController _controller;
|
||||
|
||||
/**
|
||||
* 璇诲彇鐘舵€?
|
||||
*/
|
||||
private PacketReadState _readState = PacketReadState.WAIT_NEW_PACKET;
|
||||
|
||||
IOHandler(SocketEngine client, SystemController controller) {
|
||||
_engine = client;
|
||||
_controller = controller;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
private ByteArray handleDataSize(ByteArray data) throws Exception {
|
||||
int num = data.readInt();
|
||||
int pos = INT_BYTE_SIZE;
|
||||
if (num != -1) {
|
||||
_expectedLength = num;
|
||||
data = resizeByteArray(data, pos, data.length() - pos);
|
||||
_readState = PacketReadState.WAIT_DATA;
|
||||
return data;
|
||||
}
|
||||
_readState = PacketReadState.WAIT_DATA_SIZE_FRAGMENT;
|
||||
_buffer.writeBytes(data.bytes());
|
||||
data = EMPTY_BUFFER;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
private ByteArray handleDataSizeFragment(ByteArray data) throws Exception {
|
||||
int count = INT_BYTE_SIZE - _buffer.length();
|
||||
if (data.length() >= count) {
|
||||
_buffer.writeBytes(data.bytes(), 0, count);
|
||||
int num2 = INT_BYTE_SIZE;
|
||||
ByteArray array = new ByteArray();
|
||||
array.writeBytes(_buffer.bytes(), 0, num2);
|
||||
array.position(0);
|
||||
int num3 = array.readInt();
|
||||
_expectedLength = num3;
|
||||
_buffer = new ByteArray();
|
||||
_readState = PacketReadState.WAIT_DATA;
|
||||
if (data.length() > count) {
|
||||
data = resizeByteArray(data, count, data.length() - count);
|
||||
return data;
|
||||
}
|
||||
data = EMPTY_BUFFER;
|
||||
return data;
|
||||
}
|
||||
_buffer.writeBytes(data.bytes());
|
||||
data = EMPTY_BUFFER;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
private ByteArray handleInvalidData(ByteArray data) {
|
||||
if (_skipBytes == 0) {
|
||||
_readState = PacketReadState.WAIT_NEW_PACKET;
|
||||
return data;
|
||||
}
|
||||
int pos = Math.min(data.length(), _skipBytes);
|
||||
data = resizeByteArray(data, pos, data.length() - pos);
|
||||
_skipBytes -= pos;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
private ByteArray handleNewPacket(ByteArray data) throws Exception {
|
||||
_buffer = new ByteArray();
|
||||
_expectedLength = -1;
|
||||
_compressed = data.readByte() > 0;
|
||||
data = resizeByteArray(data, 1, data.length() - 1);
|
||||
_readState = PacketReadState.WAIT_DATA_SIZE;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
private ByteArray handlePacketData(ByteArray data) throws Exception {
|
||||
int count = _expectedLength - _buffer.length();
|
||||
boolean flag = data.length() > count;
|
||||
ByteArray array = new ByteArray(data.bytes());
|
||||
try {
|
||||
if (data.length() >= count) {
|
||||
_buffer.writeBytes(data.bytes(), 0, count);
|
||||
if (_compressed) {
|
||||
_buffer.uncompress();
|
||||
}
|
||||
dispatchRequest(_buffer);
|
||||
_readState = PacketReadState.WAIT_NEW_PACKET;
|
||||
} else {
|
||||
_buffer.writeBytes(data.bytes());
|
||||
}
|
||||
if (flag) {
|
||||
data = resizeByteArray(data, count, data.length() - count);
|
||||
return data;
|
||||
}
|
||||
data = EMPTY_BUFFER;
|
||||
} catch (Exception exception) {
|
||||
logger.error("Error handling data ", exception);
|
||||
_skipBytes = count;
|
||||
_readState = PacketReadState.INVALID_DATA;
|
||||
return array;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
private void dispatchRequest(ByteArray _buffer) throws IOException {
|
||||
ITObject requestObject = TObject.newFromBinaryData(_buffer.bytes());
|
||||
Packet packet = new Packet();
|
||||
if (requestObject.isNull(ACTION_ID)) {
|
||||
throw new IOException("Request rejected: No Action ID in request!");
|
||||
}
|
||||
packet.actionID = requestObject.getByte(ACTION_ID);
|
||||
packet.parameters = requestObject.getTObject(PARAM_ID);
|
||||
_controller.handlePacket(packet);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @throws IOException
|
||||
*/
|
||||
public void onDataRead(ByteArray data) throws IOException {
|
||||
if (data.length() == 0) {
|
||||
throw new IOException("Unexpected empty packet data: no readable bytes available!");
|
||||
}
|
||||
|
||||
data.position(0);
|
||||
try {
|
||||
while (data.length() > 0) {
|
||||
if (_readState == PacketReadState.WAIT_NEW_PACKET) {
|
||||
data = handleNewPacket(data);
|
||||
} else {
|
||||
if (_readState == PacketReadState.WAIT_DATA_SIZE) {
|
||||
data = handleDataSize(data);
|
||||
continue;
|
||||
}
|
||||
if (_readState == PacketReadState.WAIT_DATA_SIZE_FRAGMENT) {
|
||||
data = handleDataSizeFragment(data);
|
||||
continue;
|
||||
}
|
||||
if (_readState == PacketReadState.WAIT_DATA) {
|
||||
data = handlePacketData(data);
|
||||
continue;
|
||||
}
|
||||
if (_readState == PacketReadState.INVALID_DATA) {
|
||||
data = handleInvalidData(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
this.logger.error(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param packet
|
||||
* @throws IOException
|
||||
*/
|
||||
public void onDataWrite(Packet packet) throws IOException {
|
||||
ByteArray binData = new ByteArray();
|
||||
|
||||
ITObject obj2 = new TObject();
|
||||
obj2.putByte(ACTION_ID, (byte) packet.actionID);
|
||||
obj2.putTObject(PARAM_ID, packet.parameters);
|
||||
byte[] array2 = obj2.toBinary();
|
||||
boolean compression = array2.length > _engine.getProtocolCompression();
|
||||
if (compression) {
|
||||
array2 = Utils.compress(array2);
|
||||
}
|
||||
binData.writeByte((byte) (compression ? 1 : 0));
|
||||
binData.writeInt(array2.length);
|
||||
binData.writeBytes(array2);
|
||||
|
||||
if (_engine._socket.isConnected()) {
|
||||
if (!_engine._socket.send(binData.bytes())) {
|
||||
_engine.enqueueStatusCallback(SocketCode.SendError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array
|
||||
* @param pos
|
||||
* @param len
|
||||
* @return
|
||||
*/
|
||||
private ByteArray resizeByteArray(ByteArray array, int pos, int len) {
|
||||
byte[] dst = new byte[len];
|
||||
System.arraycopy(array.bytes(), pos, dst, 0, len);
|
||||
return new ByteArray(dst);
|
||||
}
|
||||
|
||||
static enum PacketReadState {
|
||||
WAIT_NEW_PACKET, WAIT_DATA_SIZE, WAIT_DATA_SIZE_FRAGMENT, WAIT_DATA, INVALID_DATA
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package com.group.service.io;
|
||||
|
||||
/**
|
||||
* 缃戠粶鐘舵€佹灇涓?
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public enum SocketState{
|
||||
Disconnected,
|
||||
Connecting,
|
||||
Connected,
|
||||
Disconnecting
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue