evt_online添加渠道信息
This commit is contained in:
parent
0cba0b0b25
commit
aa3a713699
|
@ -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
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue