| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- 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
- }
- }
- }
|