上传战斗服
This commit is contained in:
parent
71b4c4c185
commit
4e528ac669
@ -14,25 +14,32 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func newClient(addr string, mgr IClientMgr, log log.ILogger) (c *client, err error) {
|
func newClient(addr string, mgr IClientMgr, log log.ILogger) (c *client, err error) {
|
||||||
c = &client{addr: addr, mgr: mgr, log: log, seq: 1, state: 1, pending: make(map[uint64]*MessageCall)}
|
msg := &pb.BattleRpcMessage{
|
||||||
|
Rid: 0,
|
||||||
|
Method: "Heartbeat",
|
||||||
|
}
|
||||||
|
data, _ := proto.Marshal(msg)
|
||||||
|
c = &client{addr: addr, mgr: mgr, log: log, seq: 1, state: 1, pending: make(map[uint64]*MessageCall), heartbeatpack: data}
|
||||||
dialer := websocket.Dialer{}
|
dialer := websocket.Dialer{}
|
||||||
ctx, _ := context.WithTimeout(context.Background(), time.Second*5)
|
ctx, _ := context.WithTimeout(context.Background(), time.Second*5)
|
||||||
if c.conn, _, err = dialer.DialContext(ctx, addr, nil); err != nil {
|
if c.conn, _, err = dialer.DialContext(ctx, addr, nil); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
go c.run()
|
go c.run()
|
||||||
|
c.heartbeat()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
type client struct {
|
type client struct {
|
||||||
addr string
|
addr string
|
||||||
mgr IClientMgr
|
mgr IClientMgr
|
||||||
log log.ILogger
|
log log.ILogger
|
||||||
conn *websocket.Conn
|
conn *websocket.Conn
|
||||||
state int32 //状态 0 关闭 1 运行 2 关闭中
|
state int32 //状态 0 关闭 1 运行 2 关闭中
|
||||||
seq uint64
|
seq uint64
|
||||||
pendingmutex sync.Mutex
|
pendingmutex sync.Mutex
|
||||||
pending map[uint64]*MessageCall //高并发回调
|
pending map[uint64]*MessageCall //高并发回调
|
||||||
|
heartbeatpack []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
//校验战斗过程
|
//校验战斗过程
|
||||||
@ -132,6 +139,22 @@ func (this *client) handleresponse(resp *pb.BattleRpcMessage) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *client) heartbeat() {
|
||||||
|
go func() {
|
||||||
|
timer := time.NewTicker(time.Second * 30)
|
||||||
|
locp:
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-timer.C:
|
||||||
|
if err := this.conn.WriteMessage(websocket.BinaryMessage, this.heartbeatpack); err != nil {
|
||||||
|
break locp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timer.Stop()
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
//外部代用关闭
|
//外部代用关闭
|
||||||
func (this *client) Close() {
|
func (this *client) Close() {
|
||||||
if !atomic.CompareAndSwapInt32(&this.state, 1, 2) {
|
if !atomic.CompareAndSwapInt32(&this.state, 1, 2) {
|
||||||
|
@ -48,6 +48,17 @@ func (this *battleClientMgrComp) Shutdown(c *client) {
|
|||||||
this.module.Errorf("战斗校验服务被关闭!")
|
this.module.Errorf("战斗校验服务被关闭!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *battleClientMgrComp) reconnect() (err error) {
|
||||||
|
if this.clinet != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if this.clinet, err = newClient(this.options.BattleServerAddr, this, this.options.Log); err != nil {
|
||||||
|
this.module.Errorln(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//Pvp 战斗指令输出
|
//Pvp 战斗指令输出
|
||||||
func (this *battleClientMgrComp) BattleOutCmd(out *pb.BattleOutCmdPush) {
|
func (this *battleClientMgrComp) BattleOutCmd(out *pb.BattleOutCmdPush) {
|
||||||
this.module.pvp.PvpOutCmdPush(&pb.PvpOutCmdPush{
|
this.module.pvp.PvpOutCmdPush(&pb.PvpOutCmdPush{
|
||||||
@ -64,6 +75,9 @@ func (this *battleClientMgrComp) BattleFinish(out *pb.BattleFinishPush) {
|
|||||||
//校验战斗结果
|
//校验战斗结果
|
||||||
func (this *battleClientMgrComp) CheckBattle(ctx context.Context, req *pb.BattleReport) (reply *pb.BattleCheckResults, err error) {
|
func (this *battleClientMgrComp) CheckBattle(ctx context.Context, req *pb.BattleReport) (reply *pb.BattleCheckResults, err error) {
|
||||||
reply = &pb.BattleCheckResults{}
|
reply = &pb.BattleCheckResults{}
|
||||||
|
if err = this.reconnect(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
if err = this.clinet.callBattle(ctx, "Check", req, reply); err != nil {
|
if err = this.clinet.callBattle(ctx, "Check", req, reply); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
}
|
}
|
||||||
@ -73,7 +87,9 @@ func (this *battleClientMgrComp) CheckBattle(ctx context.Context, req *pb.Battle
|
|||||||
//实时pvp战斗创建
|
//实时pvp战斗创建
|
||||||
func (this *battleClientMgrComp) GetInfo(ctx context.Context, req *pb.BattleGetInfoReq) (reply *pb.BattleGetInfoResp, err error) {
|
func (this *battleClientMgrComp) GetInfo(ctx context.Context, req *pb.BattleGetInfoReq) (reply *pb.BattleGetInfoResp, err error) {
|
||||||
this.module.Debug("GetInfo", log.Field{Key: "req", Value: req})
|
this.module.Debug("GetInfo", log.Field{Key: "req", Value: req})
|
||||||
|
if err = this.reconnect(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
reply = &pb.BattleGetInfoResp{}
|
reply = &pb.BattleGetInfoResp{}
|
||||||
if err = this.clinet.callBattle(ctx, "GetInfo", req, reply); err != nil {
|
if err = this.clinet.callBattle(ctx, "GetInfo", req, reply); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
@ -84,7 +100,9 @@ func (this *battleClientMgrComp) GetInfo(ctx context.Context, req *pb.BattleGetI
|
|||||||
//实时pvp战斗创建
|
//实时pvp战斗创建
|
||||||
func (this *battleClientMgrComp) CreateBattle(ctx context.Context, req *pb.BattleCreateServerReq) (reply *pb.BattleCreateServerResp, err error) {
|
func (this *battleClientMgrComp) CreateBattle(ctx context.Context, req *pb.BattleCreateServerReq) (reply *pb.BattleCreateServerResp, err error) {
|
||||||
this.module.Debug("CreateBattle", log.Field{Key: "req", Value: req})
|
this.module.Debug("CreateBattle", log.Field{Key: "req", Value: req})
|
||||||
|
if err = this.reconnect(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
reply = &pb.BattleCreateServerResp{}
|
reply = &pb.BattleCreateServerResp{}
|
||||||
if err = this.clinet.callBattle(ctx, "Create", req, reply); err != nil {
|
if err = this.clinet.callBattle(ctx, "Create", req, reply); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
@ -94,6 +112,10 @@ func (this *battleClientMgrComp) CreateBattle(ctx context.Context, req *pb.Battl
|
|||||||
|
|
||||||
//实时pvp 输入指令输入
|
//实时pvp 输入指令输入
|
||||||
func (this *battleClientMgrComp) InCmdBattle(ctx context.Context, req *pb.BattleInCmdReq) (reply *pb.BattleInCmdResp, err error) {
|
func (this *battleClientMgrComp) InCmdBattle(ctx context.Context, req *pb.BattleInCmdReq) (reply *pb.BattleInCmdResp, err error) {
|
||||||
|
this.module.Debug("InCmdBattle", log.Field{Key: "req", Value: req})
|
||||||
|
if err = this.reconnect(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
reply = &pb.BattleInCmdResp{}
|
reply = &pb.BattleInCmdResp{}
|
||||||
if err = this.clinet.callBattle(ctx, "InCmd", req, reply); err != nil {
|
if err = this.clinet.callBattle(ctx, "InCmd", req, reply); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
@ -103,6 +125,10 @@ func (this *battleClientMgrComp) InCmdBattle(ctx context.Context, req *pb.Battle
|
|||||||
|
|
||||||
//实时pvp 认输
|
//实时pvp 认输
|
||||||
func (this *battleClientMgrComp) ConcedeBattle(ctx context.Context, req *pb.BattleConcedeReq) (reply *pb.BattleConcedeResp, err error) {
|
func (this *battleClientMgrComp) ConcedeBattle(ctx context.Context, req *pb.BattleConcedeReq) (reply *pb.BattleConcedeResp, err error) {
|
||||||
|
this.module.Debug("ConcedeBattle", log.Field{Key: "req", Value: req})
|
||||||
|
if err = this.reconnect(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
reply = &pb.BattleConcedeResp{}
|
reply = &pb.BattleConcedeResp{}
|
||||||
if err = this.clinet.callBattle(ctx, "Concede", req, reply); err != nil {
|
if err = this.clinet.callBattle(ctx, "Concede", req, reply); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
|
Loading…
Reference in New Issue
Block a user