ensure that messages are received through ack

master
Alex 2022-01-30 20:53:32 +01:00
parent df8c94a795
commit 457a238082
3 changed files with 6 additions and 9 deletions

View File

@ -2,6 +2,7 @@ package structs
import (
"sync"
"time"
"github.com/gofiber/websocket/v2"
"krakatoa.net/backend/modules/logger"
@ -49,6 +50,10 @@ func (mcClient *MinecraftClient) GenerateMinecraftCmdID() int {
return mcClient.CurrentCmdIDIndexByBackend
}
func (mcClient *MinecraftClient) AddMessageToSendQueue(raw []byte, cmdID int) {
mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()})
}
func (mcClient *MinecraftClient) RemoveSendMessageFromQueueByCmdID(cmdID int) {
mcClient.sendQueueMessagesMu.Lock()
defer mcClient.sendQueueMessagesMu.Unlock()

View File

@ -229,7 +229,7 @@ func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNu
}
if status == kraProtocol.StatusGet {
mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()})
mcClient.AddMessageToSendQueue(raw, cmdID)
}
return nil

View File

@ -129,14 +129,6 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, msg []byt
raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args)
webClient.SendBinaryMessage(conn, raw)
if status == kraProtocol.StatusGet {
if isVoice {
webClient.SendVoiceQueueMessages = append(webClient.SendVoiceQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()})
} else {
webClient.SendMobileQueueMessages = append(webClient.SendMobileQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()})
}
}
}
return
} else { // web