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