added ack handling for voice and mobile send queue messages

master
Alex 2022-03-01 19:36:28 +01:00
parent 9a7791dc94
commit c23a6dcdab
1 changed files with 38 additions and 17 deletions

View File

@ -6,6 +6,7 @@ import (
"krakatoa.net/backend/modules/cache" "krakatoa.net/backend/modules/cache"
"krakatoa.net/backend/modules/configs/kraSettingsConfig" "krakatoa.net/backend/modules/configs/kraSettingsConfig"
"krakatoa.net/backend/modules/logger" "krakatoa.net/backend/modules/logger"
"krakatoa.net/backend/modules/structs"
) )
/* /*
@ -32,27 +33,47 @@ func AckHandler() {
for _ = range ticker.C { for _ = range ticker.C {
currentTime := time.Now() currentTime := time.Now()
/*for uuid, webClient := range cache.WebClients { for _, webClient := range cache.WebClients {
logger.Web.Println("ackHandler web client", uuid, webClient.SendVoiceQueueMessages, webClient.SendMobileQueueMessages) for _, msg := range webClient.SendVoiceQueueMessages {
handleSendQueueMessage(currentTime, webClient, true, nil, msg)
}
} */ for _, msg := range webClient.SendMobileQueueMessages {
handleSendQueueMessage(currentTime, webClient, false, nil, msg)
}
}
for _, mcClient := range cache.MinecraftClients { for _, mcClient := range cache.MinecraftClients {
for _, msg := range mcClient.SendQueueMessages { for _, msg := range mcClient.SendQueueMessages {
if int(currentTime.UnixMilli())-int(msg.Time.UnixMilli()) > kraSettingsConfig.Cfg.WebSocket.AckTimeouts[msg.TrySendCount] { handleSendQueueMessage(currentTime, nil, false, mcClient, msg)
logger.Minecraft.Println("here") }
msg.Time = currentTime }
}
err := mcClient.SendBinaryMessage(msg.MessageRaw) }
if err != nil { func handleSendQueueMessage(currentTime time.Time, webClient *structs.WebClient, isVoice bool, mcClient *structs.MinecraftClient, msg *structs.SendQueueMessage) {
logger.Minecraft.Println("ackHandler err sending msg", err) if int(currentTime.UnixMilli())-int(msg.Time.UnixMilli()) > kraSettingsConfig.Cfg.WebSocket.AckTimeouts[msg.TrySendCount] {
} var err error
if msg.TrySendCount < 4 { if webClient != nil && mcClient != nil {
msg.TrySendCount++ msg.Time = currentTime
}
} if webClient != nil {
if isVoice {
err = webClient.SendBinaryMessage(webClient.VoiceConn, msg.MessageRaw)
} else {
err = webClient.SendBinaryMessage(webClient.MobileConn, msg.MessageRaw)
}
} else {
err = mcClient.SendBinaryMessage(msg.MessageRaw)
}
if err != nil {
logger.Web.Println("ackHandler err sending msg", err)
}
if msg.TrySendCount < 4 {
msg.TrySendCount++
} }
} }
} }