Backend/serverCommunication/serverCommunication.go

68 lines
1.9 KiB
Go

package serverCommunication
import (
"time"
"krakatoa.net/backend/modules/cache"
"krakatoa.net/backend/modules/configs/kraSettingsConfig"
"krakatoa.net/backend/modules/logger"
)
/*
func getClientByDest(dest int, uuid string) (*structs.WebClient, *structs.MinecraftClient) {
switch dest {
case kraProtocol.DestVoice:
return GetWebClientByUuid(uuid), nil
case kraProtocol.DestMobile:
return GetWebClientByUuid(uuid), nil
case kraProtocol.DestProxy:
return nil, GetMinecraftClientByName("proxy-1")
case kraProtocol.DestPlayersCurrentServer:
return nil, GetMinecraftClientByName("lobby-1")
default:
logger.Web.Println("conn for dest is nil")
return nil, nil
}
}
*/
func AckHandler() {
ticker := time.NewTicker(20 * time.Millisecond) // 20 * time.Millisecond
for _ = range ticker.C {
currentTime := time.Now()
/*for uuid, webClient := range cache.WebClients {
logger.Web.Println("ackHandler web client", uuid, webClient.SendVoiceQueueMessages, webClient.SendMobileQueueMessages)
} */
for serverName, mcClient := range cache.MinecraftClients {
logger.Minecraft.Println("ackHandler mc client", serverName, mcClient.SendQueueMessages, kraSettingsConfig.Cfg.WebSocket.AckTimeouts)
for _, msg := range mcClient.SendQueueMessages {
logger.Minecraft.Println("msg", msg)
logger.Minecraft.Println("ackHandler mc", msg.TrySendCount, kraSettingsConfig.Cfg.WebSocket.AckTimeouts[msg.TrySendCount], currentTime.UnixMilli()-msg.Time.UnixMilli())
if int(currentTime.UnixMilli())-int(msg.Time.UnixMilli()) > kraSettingsConfig.Cfg.WebSocket.AckTimeouts[msg.TrySendCount] {
logger.Minecraft.Println("here")
msg.Time = time.Now()
err := mcClient.SendBinaryMessage(msg.MessageRaw)
if err != nil {
logger.Minecraft.Println("ackHandler err sending msg", err)
}
if msg.TrySendCount < 4 {
msg.TrySendCount++
}
} else {
logger.Minecraft.Println("ok here")
}
}
}
}
}