evt_online添加渠道信息

This commit is contained in:
sk 2024-04-25 09:46:57 +08:00
parent 0cba0b0b25
commit aa3a713699
2 changed files with 28 additions and 15 deletions

View File

@ -8,11 +8,14 @@ import (
) )
// GenerateOnline 在线统计 // GenerateOnline 在线统计
func GenerateOnline(online map[string]int) *RabbitMQData { func GenerateOnline(online map[string]map[string]int) *RabbitMQData {
m := map[int]int{} // 平台:真人数 m := map[string]map[int]int{} // 渠道:平台:真人数
for k, v := range online { for k, v := range online {
i, _ := strconv.Atoi(k) m[k] = map[int]int{}
m[i] = v for k1, v1 := range v {
pf, _ := strconv.Atoi(k1)
m[k][pf] = v1
}
} }
params := make(map[string]interface{}) params := make(map[string]interface{})
params["Online"] = m params["Online"] = m

View File

@ -7,12 +7,12 @@ import (
) )
var PlayerOnlineSington = &PlayerOnlineEvent{ var PlayerOnlineSington = &PlayerOnlineEvent{
Online: make(map[string]int), OnlineCh: make(map[string]map[string]int),
} }
type PlayerOnlineEvent struct { type PlayerOnlineEvent struct {
Online map[string]int OnlineCh map[string]map[string]int
Check bool Check bool
} }
func (p *PlayerOnlineEvent) ModuleName() string { func (p *PlayerOnlineEvent) ModuleName() string {
@ -23,30 +23,40 @@ func (p *PlayerOnlineEvent) Init() {
} }
// 每五秒钟统计一次在线数据 // 每五秒钟统计一次在线数据
// 没有登录,登出,掉线情况直接不统计 // 没有登录,登出,掉线情况不统计
func (p *PlayerOnlineEvent) Update() { func (p *PlayerOnlineEvent) Update() {
if !p.Check { if !p.Check {
return return
} }
p.Check = false p.Check = false
m := map[string]int{} onlineCh := map[string]map[string]int{}
for _, player := range PlayerMgrSington.sidMap { for _, player := range PlayerMgrSington.sidMap {
if player != nil && !player.IsRob && player.IsOnLine() { if player != nil && !player.IsRob && player.IsOnLine() {
m[player.Platform] = m[player.Platform] + 1 info, ok := onlineCh[player.Channel]
if !ok {
onlineCh[player.Channel] = map[string]int{}
info = onlineCh[player.Channel]
}
info[player.Platform] += 1
} }
} }
if len(m) == len(p.Online) { if len(onlineCh) == len(p.OnlineCh) {
for k, v := range m { for k, v := range onlineCh {
if p.Online[k] != v { if len(v) != len(p.OnlineCh[k]) {
goto here goto here
} }
for k1, v1 := range v {
if v1 != p.OnlineCh[k][k1] {
goto here
}
}
} }
return return
} }
here: here:
p.Online = m p.OnlineCh = onlineCh
LogChannelSingleton.WriteMQData(model.GenerateOnline(p.Online)) LogChannelSingleton.WriteMQData(model.GenerateOnline(p.OnlineCh))
} }
func (p *PlayerOnlineEvent) Shutdown() { func (p *PlayerOnlineEvent) Shutdown() {