minecraft ack handling
parent
a90e1245d1
commit
2c8f5aa56b
|
@ -80,36 +80,56 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
||||||
if status == kraProtocol.StatusGet {
|
if status == kraProtocol.StatusGet {
|
||||||
raw = kraProtocol.EncodeJavaMessage(kraProtocol.StatusReply, cmdID, 0, playerUuid, cmdNumber, resArgs)
|
raw = kraProtocol.EncodeJavaMessage(kraProtocol.StatusReply, cmdID, 0, playerUuid, cmdNumber, resArgs)
|
||||||
|
|
||||||
err = conn.WriteMessage(websocket.BinaryMessage, raw)
|
err = mcClient.SendBinaryMessage(raw)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Minecraft.Warnln("write:", err)
|
logger.Minecraft.Warnln("write:", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if dest == kraProtocol.DestVoice || dest == kraProtocol.DestMobile { // forwarding messsage to voice or mobile
|
} else if dest == kraProtocol.DestVoice || dest == kraProtocol.DestMobile { // forwarding messsage to voice or mobile
|
||||||
destConn := getConnForDest(dest, playerUuid)
|
webClient := GetWebClientByUuid(playerUuid)
|
||||||
|
|
||||||
if destConn != nil {
|
if webClient == nil || dest == kraProtocol.DestVoice && webClient.VoiceConn == nil || dest == kraProtocol.DestMobile && webClient.MobileConn == nil {
|
||||||
raw = kraProtocol.EncodeWebMessage(status, cmdID, cmdNumber, args)
|
raw = kraProtocol.EncodeJavaMessage(kraProtocol.StatusErrTryAgain, cmdID, 0, playerUuid, cmdNumber, args)
|
||||||
|
|
||||||
err = destConn.WriteMessage(websocket.BinaryMessage, raw)
|
err = mcClient.SendBinaryMessage(raw)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Minecraft.Warnln("write:", err)
|
logger.Minecraft.Warnln("write:", err)
|
||||||
}
|
}
|
||||||
} else { // conn is not connected
|
return
|
||||||
raw = kraProtocol.EncodeJavaMessage(kraProtocol.StatusErrTryAgain, cmdID, dest, playerUuid, cmdNumber, args)
|
|
||||||
|
|
||||||
err = conn.WriteMessage(websocket.BinaryMessage, raw)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logger.Minecraft.Warnln("write:", err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if status == kraProtocol.StatusGet {
|
||||||
|
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusGet, cmdID, cmdNumber, args)
|
||||||
|
} else {
|
||||||
|
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, cmdID, cmdNumber, args)
|
||||||
|
}
|
||||||
|
|
||||||
|
if dest == kraProtocol.DestVoice {
|
||||||
|
webClient.SendBinaryMessage(webClient.VoiceConn, raw)
|
||||||
|
} else {
|
||||||
|
webClient.SendBinaryMessage(webClient.MobileConn, raw)
|
||||||
}
|
}
|
||||||
} else if dest == kraProtocol.DestProxy {
|
} else if dest == kraProtocol.DestProxy {
|
||||||
client := GetMinecraftClientByName("proxy-1")
|
client := GetMinecraftClientByName("proxy-1")
|
||||||
|
|
||||||
raw := kraProtocol.EncodeJavaMessage(status, cmdID, dest, playerUuid, cmdNumber, args)
|
if client == nil {
|
||||||
|
raw = kraProtocol.EncodeJavaMessage(kraProtocol.StatusErrTryAgain, cmdID, 0, playerUuid, cmdNumber, "")
|
||||||
|
|
||||||
|
err = mcClient.SendBinaryMessage(raw)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
logger.Minecraft.Warnln("write:", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if status == kraProtocol.StatusGet {
|
||||||
|
raw = kraProtocol.EncodeJavaMessage(kraProtocol.StatusGet, cmdID, dest, playerUuid, cmdNumber, args)
|
||||||
|
} else {
|
||||||
|
raw = kraProtocol.EncodeJavaMessage(kraProtocol.StatusSend, cmdID, dest, playerUuid, cmdNumber, args)
|
||||||
|
}
|
||||||
|
|
||||||
err = client.SendBinaryMessage(raw)
|
err = client.SendBinaryMessage(raw)
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,19 @@
|
||||||
package serverCommunication
|
package serverCommunication
|
||||||
|
|
||||||
import (
|
/*
|
||||||
"github.com/gofiber/websocket/v2"
|
func getClientByDest(dest int, uuid string) (*structs.WebClient, *structs.MinecraftClient) {
|
||||||
"krakatoa.net/backend/modules/kraProtocol"
|
|
||||||
"krakatoa.net/backend/modules/logger"
|
|
||||||
)
|
|
||||||
|
|
||||||
func getConnForDest(dest int, uuid string) *websocket.Conn {
|
|
||||||
switch dest {
|
switch dest {
|
||||||
case kraProtocol.DestVoice:
|
case kraProtocol.DestVoice:
|
||||||
return GetWebClientByUuid(uuid).VoiceConn
|
return GetWebClientByUuid(uuid), nil
|
||||||
case kraProtocol.DestMobile:
|
case kraProtocol.DestMobile:
|
||||||
return GetWebClientByUuid(uuid).MobileConn
|
return GetWebClientByUuid(uuid), nil
|
||||||
case kraProtocol.DestProxy:
|
case kraProtocol.DestProxy:
|
||||||
return GetMinecraftClientByName("proxy-1").Conn
|
return nil, GetMinecraftClientByName("proxy-1")
|
||||||
case kraProtocol.DestPlayersCurrentServer:
|
case kraProtocol.DestPlayersCurrentServer:
|
||||||
return GetMinecraftClientByName("lobby-1").Conn
|
return nil, GetMinecraftClientByName("lobby-1")
|
||||||
default:
|
default:
|
||||||
logger.Web.Println("conn for dest is nil")
|
logger.Web.Println("conn for dest is nil")
|
||||||
return nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
Loading…
Reference in New Issue