ensure that messages are received through ack
parent
df8c94a795
commit
457a238082
|
@ -2,6 +2,7 @@ package structs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/gofiber/websocket/v2"
|
"github.com/gofiber/websocket/v2"
|
||||||
"krakatoa.net/backend/modules/logger"
|
"krakatoa.net/backend/modules/logger"
|
||||||
|
@ -49,6 +50,10 @@ func (mcClient *MinecraftClient) GenerateMinecraftCmdID() int {
|
||||||
return mcClient.CurrentCmdIDIndexByBackend
|
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) {
|
func (mcClient *MinecraftClient) RemoveSendMessageFromQueueByCmdID(cmdID int) {
|
||||||
mcClient.sendQueueMessagesMu.Lock()
|
mcClient.sendQueueMessagesMu.Lock()
|
||||||
defer mcClient.sendQueueMessagesMu.Unlock()
|
defer mcClient.sendQueueMessagesMu.Unlock()
|
||||||
|
|
|
@ -229,7 +229,7 @@ func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNu
|
||||||
}
|
}
|
||||||
|
|
||||||
if status == kraProtocol.StatusGet {
|
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
|
return nil
|
||||||
|
|
|
@ -129,14 +129,6 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, msg []byt
|
||||||
raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args)
|
raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args)
|
||||||
|
|
||||||
webClient.SendBinaryMessage(conn, raw)
|
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
|
return
|
||||||
} else { // web
|
} else { // web
|
||||||
|
|
Loading…
Reference in New Issue