mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 15:32:26 +08:00
服务器玩家在线信息同步
This commit is contained in:
@@ -111,6 +111,8 @@ func (k *KcpConnectManager) run() {
|
||||
go k.sendMsgHandle()
|
||||
go k.acceptHandle(listener)
|
||||
go k.gateNetInfo()
|
||||
k.syncGlobalGsOnlineMap()
|
||||
go k.autoSyncGlobalGsOnlineMap()
|
||||
}
|
||||
|
||||
func (k *KcpConnectManager) Close() {
|
||||
@@ -268,7 +270,7 @@ func (k *KcpConnectManager) enetHandle(listener *kcp.Listener) {
|
||||
}
|
||||
}
|
||||
|
||||
// Session 连接会话结构
|
||||
// Session 连接会话结构 只允许定义并发安全或者简单的基础数据结构
|
||||
type Session struct {
|
||||
conn *kcp.UDPSession
|
||||
connState uint8
|
||||
@@ -467,3 +469,28 @@ func (k *KcpConnectManager) DeleteSession(convId uint64, userId uint32) {
|
||||
delete(k.sessionUserIdMap, userId)
|
||||
k.sessionMapLock.Unlock()
|
||||
}
|
||||
|
||||
func (k *KcpConnectManager) autoSyncGlobalGsOnlineMap() {
|
||||
ticker := time.NewTicker(time.Second * 60)
|
||||
for {
|
||||
<-ticker.C
|
||||
k.syncGlobalGsOnlineMap()
|
||||
}
|
||||
}
|
||||
|
||||
func (k *KcpConnectManager) syncGlobalGsOnlineMap() {
|
||||
rsp, err := k.discovery.GetGlobalGsOnlineMap(context.TODO(), nil)
|
||||
if err != nil {
|
||||
logger.Error("get global gs online map error: %v", err)
|
||||
return
|
||||
}
|
||||
copyMap := make(map[uint32]string)
|
||||
for k, v := range rsp.GlobalGsOnlineMap {
|
||||
copyMap[k] = v
|
||||
}
|
||||
copyMapLen := len(copyMap)
|
||||
k.globalGsOnlineMapLock.Lock()
|
||||
k.globalGsOnlineMap = copyMap
|
||||
k.globalGsOnlineMapLock.Unlock()
|
||||
logger.Info("sync global gs online map finish, len: %v", copyMapLen)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user