package model import ( "log" "rocommon" "rocommon/rpc" "rocommon/util" "roserver/baseserver/model" "roserver/serverproto" "time" ) ////////////////////////// var testNowTime = util.GetCurrentTimeNow() var SCSyncPlayersNtfCount int32 = 0 var SCPlayerLeaveNtfCount int32 = 0 var SCPlayerEnterNtfCount int32 = 0 func (this *MapRole) SendGate(msg interface{}, idList []uint64, transmit bool) { if this.unitType != int32(UnityType_Player) { return } info := rocommon.MessageInfoByMsg(msg) //todo... // for test if info.ID != 1047 { //return } gateSess := model.GetServiceNode(this.cliID.ServiceID) if gateSess == nil { util.InfoF("gate session not exist serviceId=%v", this.cliID.ServiceID) } else { data, info, err := rpc.EncodeMessage(msg) if err != nil { util.InfoF("ReplayGate gate EncodeMessage err=%v cliId=%v", err, this.cliID) return } if transmit { if idList != nil { //透传给gate服务器,然后再发送给客户端 gateSess.Send(&serverproto.ServiceTransmitAck{ MsgId: uint32(info.ID), MsgData: data, ClientIdList: idList, }) } else { //透传给gate服务器,然后再发送给客户端 gateSess.Send(&serverproto.ServiceTransmitAck{ MsgId: uint32(info.ID), MsgData: data, ClientId: this.cliID.SessID, }) } } else { gateSess.Send(msg) } switch msg.(type) { case *serverproto.SCSyncPlayersNtf: SCSyncPlayersNtfCount++ case *serverproto.SCPlayerLeaveNtf: SCPlayerLeaveNtfCount++ case *serverproto.SCPlayerEnterNtf: SCPlayerEnterNtfCount++ } //log.Println("replay gate...", msg) if util.GetCurrentTimeNow().Sub(testNowTime) > time.Second { testNowTime = util.GetCurrentTimeNow() //log.Println("replay gate...[sync,leave,enter]",SCSyncPlayersNtfCount, SCPlayerLeaveNtfCount, SCPlayerEnterNtfCount) SCSyncPlayersNtfCount = 0 SCPlayerLeaveNtfCount = 0 SCPlayerEnterNtfCount = 0 } } } //发送给后端服务器节点 func (this *MapRole) SendBackend(msg interface{}) { //todo... // 可以用来定时同步aoi服务器状态 } func SendGate(servicId string, msg interface{}, idList []uint64, transmit bool) { info := rocommon.MessageInfoByMsg(msg) //todo... // for test if info.ID != 1047 { //return } gateSess := model.GetServiceNode(servicId) if gateSess == nil { util.InfoF("gate session not exist serviceId=%v %v", servicId, info.ID) } else { data, info, err := rpc.EncodeMessage(msg) if err != nil { util.InfoF("ReplayGate gate EncodeMessage err=%v", err) return } if transmit { if idList != nil { //透传给gate服务器,然后再发送给客户端 gateSess.Send(&serverproto.ServiceTransmitAck{ MsgId: uint32(info.ID), MsgData: data, ClientIdList: idList, }) } else { //透传给gate服务器,然后再发送给客户端 gateSess.Send(&serverproto.ServiceTransmitAck{ MsgId: uint32(info.ID), MsgData: data, }) } } else { gateSess.Send(msg) } switch msg.(type) { case *serverproto.SCSyncPlayersNtf: SCSyncPlayersNtfCount++ case *serverproto.SCPlayerLeaveNtf: SCPlayerLeaveNtfCount++ case *serverproto.SCPlayerEnterNtf: SCPlayerEnterNtfCount++ } //log.Println("replay gate...", msg) if util.GetCurrentTimeNow().Sub(testNowTime) > time.Second { testNowTime = util.GetCurrentTimeNow() log.Println("replay gate...[sync,leave,enter]", SCSyncPlayersNtfCount, SCPlayerLeaveNtfCount, SCPlayerEnterNtfCount) SCSyncPlayersNtfCount = 0 SCPlayerLeaveNtfCount = 0 SCPlayerEnterNtfCount = 0 } } }