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 在线统计
func GenerateOnline(online map[string]int) *RabbitMQData {
m := map[int]int{} // 平台:真人数
func GenerateOnline(online map[string]map[string]int) *RabbitMQData {
m := map[string]map[int]int{} // 渠道:平台:真人数
for k, v := range online {
i, _ := strconv.Atoi(k)
m[i] = v
m[k] = map[int]int{}
for k1, v1 := range v {
pf, _ := strconv.Atoi(k1)
m[k][pf] = v1
}
}
params := make(map[string]interface{})
params["Online"] = m

View File

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