added ack handling for voice and mobile send queue messages
parent
9a7791dc94
commit
c23a6dcdab
|
@ -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++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue