reply handling
parent
3924482dd4
commit
91f160496b
|
@ -10,49 +10,23 @@ import (
|
|||
"krakatoa.net/backend/modules/structs"
|
||||
)
|
||||
|
||||
func GetMinecraftClientByName(Name string) *structs.MinecraftClient {
|
||||
for name, client := range cache.MinecraftClients {
|
||||
if name == Name {
|
||||
logger.Minecraft.Debugln("return mc client", client.Name)
|
||||
return client
|
||||
}
|
||||
}
|
||||
|
||||
logger.Minecraft.Warnln("mc client nil")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetMinecraftClientByConn(conn *websocket.Conn) *structs.MinecraftClient {
|
||||
for _, client := range cache.MinecraftClients {
|
||||
if client.Conn == conn {
|
||||
return client
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getMinecraftServerNameByDest(dest int) string {
|
||||
if dest == kraProtocol.DestProxy {
|
||||
return "proxy-1"
|
||||
} else { // get players current server from db if dest is 11
|
||||
return "lobby-1"
|
||||
}
|
||||
}
|
||||
|
||||
func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest int, playerUuid string, cmdNumber int, args string) {
|
||||
func HandleMinecraftMessage(conn *websocket.Conn, msg []byte) {
|
||||
var raw []byte
|
||||
var err error
|
||||
|
||||
status, cmdID, dest, playerUuid, cmdNumber, args := kraProtocol.DecodeJavaMessage(msg)
|
||||
|
||||
mcClient := GetMinecraftClientByConn(conn)
|
||||
|
||||
if mcClient == nil {
|
||||
raw := kraProtocol.EncodeJavaMessage(kraProtocol.StatusErrTryAgain, cmdID, 0, playerUuid, cmdNumber, "")
|
||||
// TODO: when does this apply? Send error with conn?
|
||||
logger.Minecraft.Warnln("mcClient is nil")
|
||||
return
|
||||
}
|
||||
|
||||
err = conn.WriteMessage(websocket.BinaryMessage, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.Minecraft.Warnln("write err:", err)
|
||||
if status == kraProtocol.StatusReply {
|
||||
if isCmdIDInList(mcClient.CmdIDs, cmdID) {
|
||||
mcClient.RemoveCmdID(cmdID)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -141,6 +115,36 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
|||
}
|
||||
}
|
||||
|
||||
func GetMinecraftClientByName(Name string) *structs.MinecraftClient {
|
||||
for name, client := range cache.MinecraftClients {
|
||||
if name == Name {
|
||||
logger.Minecraft.Debugln("return mc client", client.Name)
|
||||
return client
|
||||
}
|
||||
}
|
||||
|
||||
logger.Minecraft.Warnln("mc client nil")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetMinecraftClientByConn(conn *websocket.Conn) *structs.MinecraftClient {
|
||||
for _, client := range cache.MinecraftClients {
|
||||
if client.Conn == conn {
|
||||
return client
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getMinecraftServerNameByDest(dest int) string {
|
||||
if dest == kraProtocol.DestProxy {
|
||||
return "proxy-1"
|
||||
} else { // get players current server from db if dest is 11
|
||||
return "lobby-1"
|
||||
}
|
||||
}
|
||||
|
||||
func minecraftCommandHandler(cmdNumber int, playerUuid string) (args string) {
|
||||
switch cmdNumber {
|
||||
case 10: // testing
|
||||
|
|
|
@ -24,6 +24,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, msg []byt
|
|||
|
||||
if webClient == nil {
|
||||
// TODO: when does this apply? Send error with conn?
|
||||
logger.Web.Debugln("webClient is nil")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ package minecraft
|
|||
import (
|
||||
"github.com/gofiber/websocket/v2"
|
||||
"krakatoa.net/backend/modules/cache"
|
||||
"krakatoa.net/backend/modules/kraProtocol"
|
||||
"krakatoa.net/backend/modules/logger"
|
||||
"krakatoa.net/backend/modules/structs"
|
||||
serverCommunication "krakatoa.net/backend/serverCommunication"
|
||||
|
@ -26,9 +25,7 @@ func RunHub() {
|
|||
case data := <-broadcast:
|
||||
logger.Minecraft.Debugln("message received", data.Msg)
|
||||
|
||||
status, cmdID, dest, playerUuid, cmdNumber, args := kraProtocol.DecodeJavaMessage(data.Msg)
|
||||
|
||||
serverCommunication.HandleMinecraftMessage(data.Conn, status, cmdID, dest, playerUuid, cmdNumber, args)
|
||||
go serverCommunication.HandleMinecraftMessage(data.Conn, data.Msg)
|
||||
|
||||
case connection := <-unregister:
|
||||
for servername, client := range cache.MinecraftClients {
|
||||
|
|
Loading…
Reference in New Issue