提交心跳初版

back_recharge
mashiyu 2019-01-07 09:53:06 +08:00
parent 99062edcfd
commit 525c245fab
4 changed files with 74 additions and 11 deletions

View File

@ -46,8 +46,10 @@ public class NettyClient {
/*---------------------------------------------------------------------------------------------------------*/
while (true){
Thread.sleep(10000);
List<PacketNetData> result = handler.sendRequest_jieling(gameMessage);
Thread.sleep(5000);
// List<PacketNetData> result = handler.sendRequest_jieling(gameMessage);
List<PacketNetData> result = handler.sendHeartBeat_jieling();
LOGGER.info("send to server...");
}
// ch.close();

View File

@ -84,6 +84,18 @@ public class NettyTCPClientHandler extends SimpleChannelInboundHandler<Object> {
}
public List<PacketNetData> sendHeartBeat_jieling() {
byte[] finalMessage = makeHeartBeatMessage();
channel.writeAndFlush(finalMessage);
ArrayList<PacketNetData> msgs = new ArrayList<PacketNetData>();
return msgs;
}
private byte[] makeFinalMessage(MessageLite request) {
byte[] messageData = request.toByteArray();
byte[] packetData = new byte[messageData.length + 16];
@ -99,6 +111,17 @@ public class NettyTCPClientHandler extends SimpleChannelInboundHandler<Object> {
return finalData;
}
private byte[] makeHeartBeatMessage() {
byte[] packetData = new byte[12];
Tea.intToByte(packetData, 0, 10000001);
Tea.intToByte(packetData, 4, 543242);
Tea.intToByte(packetData, 8, 1000);
int[] secretKey = Tea.KEY;
byte[] finalData = Tea.encrypt2(packetData, secretKey);
return finalData;
}
@Override
public void channelRegistered(ChannelHandlerContext ctx) {
@ -113,12 +136,15 @@ public class NettyTCPClientHandler extends SimpleChannelInboundHandler<Object> {
int userId = packetNetData.getUserId();
int token = packetNetData.getToken();
int msgId = packetNetData.getMsgId();
int msgIndex = packetNetData.getIndex();
int resultCode = packetNetData.getResult();
byte[] backmessage = packetNetData.parseServerProtoNetData();
PlayerInfoProto.PlayerInfo.GetPlayerInfoResponse getPlayerInfoResponse
= PlayerInfoProto.PlayerInfo.GetPlayerInfoResponse.parseFrom(backmessage);
System.out.println("back hartbeat id : "+msgId);
// int msgIndex = packetNetData.getIndex();
// int resultCode = packetNetData.getResult();
// byte[] backmessage = packetNetData.parseServerProtoNetData();
// PlayerInfoProto.PlayerInfo.GetPlayerInfoResponse getPlayerInfoResponse
// = PlayerInfoProto.PlayerInfo.GetPlayerInfoResponse.parseFrom(backmessage);
// LOGGER.info("serverBack processMessage->uid={},token={},msgId={},msgIndex={},resultCode={}" +
// ",backMessageRank={},backMessageFamily={},backMessageSex={}",

View File

@ -10,6 +10,7 @@ import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocol.ProtocolsAbstract;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.session.GameSession;
import com.ljsd.jieling.util.MessageUtil;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufHolder;
import io.netty.channel.group.ChannelGroup;
@ -18,10 +19,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
/**
@ -198,6 +196,29 @@ public class ProtocolsManager implements ProtocolsAbstract {
}
final ISession session = (ISession) gameSession;
PacketNetData packetNetData = new PacketNetData((byte[])obj);
if (packetNetData.getMsgId()==1000){
new Thread(new Runnable() {
@Override
public void run() {
Random random = new Random();
int time = random.nextInt(6)+1;
try {
System.out.println("sleep time : "+time);
Thread.sleep(time*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Thread.currentThread().setName("OOOOOOOOO");
MessageUtil.sendHeartBeat(session);
}
}).start();
return;
}
BaseHandler baseHandler = handlers.get(packetNetData.getMsgId());
if (baseHandler == null) {
LOGGER.info("request unknow commond : " + packetNetData.getMsgId());

View File

@ -53,6 +53,20 @@ public class MessageUtil {
}
}
public static void sendHeartBeat(ISession session) {
int length = PackageConstant.UID_FIELD_LEN + PackageConstant.TOKEN_LEN
+ PackageConstant.MSG_ID_FIELD_LEN ;
byte[] bytes = new byte[length];
int pos = 0;
Tea.intToByte(bytes, pos, 100001);
pos += PackageConstant.UID_FIELD_LEN;
Tea.intToByte(bytes, pos, 123456);
pos += PackageConstant.TOKEN_LEN;
Tea.intToByte(bytes, pos, 1001);
byte[] byteBuf = Tea.encrypt2(bytes, Tea.KEY);
session.writeAndFlush(byteBuf);
}
// public static void sendErrorResponse(Msg msg, GeneratedMessage error_message, int msgId) throws Exception {
// String protoEntity = Base64.getEncoder().encodeToString(error_message.toByteArray());
// BaseGlobal.redisApp.hset(RedisKey.RESPONSE, String.valueOf(msg.getUid()), String.valueOf(Math.abs(msg.getIndex())), new ProtoEntity(msgId, protoEntity), -1);