send message to mc server
parent
9ff320034f
commit
4af290fcf7
|
@ -19,73 +19,71 @@ import (
|
|||
func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status int, cmdID int, dest int, cmdNumber int, args string) {
|
||||
var err error
|
||||
var raw []byte
|
||||
var client *structs.WebClient
|
||||
|
||||
// TODO: handle other dests
|
||||
webClient := getWebClientByConn(conn)
|
||||
|
||||
if webClient == nil {
|
||||
// TODO: when does this apply? Send error with conn?
|
||||
return
|
||||
}
|
||||
|
||||
if status == kraProtocol.StatusGet {
|
||||
client = getWebClientByConn(conn)
|
||||
var cmdIDInList bool
|
||||
|
||||
if client == nil {
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, "")
|
||||
logger.Web.Println("cmdID", isVoice, webClient.VoiceCmdIDs, webClient.MobileCmdIDs)
|
||||
|
||||
err = client.SendBinaryMessage(conn, raw)
|
||||
if isVoice {
|
||||
cmdIDInList = isCmdIDInList(webClient.VoiceCmdIDs, cmdID)
|
||||
} else {
|
||||
cmdIDInList = isCmdIDInList(webClient.MobileCmdIDs, cmdID)
|
||||
}
|
||||
|
||||
if cmdIDInList { // cmdID already in queue
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusMessageAlreadyInQueue, cmdID, cmdNumber, "")
|
||||
|
||||
err = webClient.SendBinaryMessage(conn, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.Web.Warnln("write:", err)
|
||||
logger.WebVoice.Warnln("write:", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// add cmdID to list
|
||||
|
||||
if isVoice {
|
||||
logger.Web.Debugln("voiceCmdIDs", webClient.VoiceCmdIDs)
|
||||
webClient.VoiceCmdIDs = append(webClient.VoiceCmdIDs, cmdID)
|
||||
logger.Web.Debugln("after voiceCmdIDs", webClient.VoiceCmdIDs)
|
||||
} else {
|
||||
var cmdIDInList bool
|
||||
|
||||
logger.Web.Println("cmdID", isVoice, client.VoiceCmdIDs, client.MobileCmdIDs)
|
||||
|
||||
if isVoice {
|
||||
cmdIDInList = isCmdIDInList(client.VoiceCmdIDs, cmdID)
|
||||
} else {
|
||||
cmdIDInList = isCmdIDInList(client.MobileCmdIDs, cmdID)
|
||||
}
|
||||
|
||||
if cmdIDInList { // cmdID already in queue
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusMessageAlreadyInQueue, cmdID, cmdNumber, "")
|
||||
|
||||
err = client.SendBinaryMessage(conn, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebVoice.Warnln("write:", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// add cmdID to list
|
||||
|
||||
if isVoice {
|
||||
logger.Web.Debugln("voiceCmdIDs", client.VoiceCmdIDs)
|
||||
client.VoiceCmdIDs = append(client.VoiceCmdIDs, cmdID)
|
||||
logger.Web.Debugln("after voiceCmdIDs", client.VoiceCmdIDs)
|
||||
} else {
|
||||
logger.Web.Debugln("MobileCmdIDs", client.MobileCmdIDs)
|
||||
client.MobileCmdIDs = append(client.MobileCmdIDs, cmdID)
|
||||
logger.Web.Debugln("after MobileCmdIDs", client.MobileCmdIDs)
|
||||
}
|
||||
logger.Web.Debugln("MobileCmdIDs", webClient.MobileCmdIDs)
|
||||
webClient.MobileCmdIDs = append(webClient.MobileCmdIDs, cmdID)
|
||||
logger.Web.Debugln("after MobileCmdIDs", webClient.MobileCmdIDs)
|
||||
}
|
||||
}
|
||||
|
||||
logger.Minecraft.Debugln("dest", dest, dest == kraProtocol.DestProxy)
|
||||
|
||||
if dest == kraProtocol.DestProxy || dest == kraProtocol.DestPlayersCurrentServer { // forwarding message to java / minecraft
|
||||
connForDest := getConnForDest(dest, uuid)
|
||||
|
||||
logger.Minecraft.Debugln("forwarding...")
|
||||
logger.Minecraft.Debugln("forwarding", client)
|
||||
logger.Minecraft.Debugln("forwarding", connForDest)
|
||||
|
||||
raw = kraProtocol.EncodeJavaMessage(status, cmdID, dest, uuid, cmdNumber, args)
|
||||
|
||||
err = client.SendBinaryMessage(connForDest, raw)
|
||||
err = SendMessageToMinecraftServer(status, dest, uuid, cmdNumber, args)
|
||||
|
||||
if err != nil {
|
||||
logger.Web.Warnln("write:", err)
|
||||
raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args)
|
||||
|
||||
webClient.SendBinaryMessage(conn, raw)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
connForDest := getConnForDest(dest, uuid)
|
||||
|
||||
raw = kraProtocol.EncodeJavaMessage(status, cmdID, dest, uuid, cmdNumber, args)
|
||||
|
||||
err = client.SendBinaryMessage(connForDest, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.Web.Warnln("write:", err)
|
||||
} */
|
||||
} else { // web
|
||||
if isVoice { // message from voice
|
||||
if dest == kraProtocol.DestMobile { // forwarding message to mobile
|
||||
|
@ -94,7 +92,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
if connForDest != nil { // mobile is connected
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, args)
|
||||
|
||||
err = client.SendBinaryMessage(connForDest, raw)
|
||||
err = webClient.SendBinaryMessage(connForDest, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebVoice.Warnln("write:", err)
|
||||
|
@ -102,7 +100,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
} else { // mobile not connected
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 58299, cmdNumber, "")
|
||||
|
||||
err = client.SendBinaryMessage(conn, raw)
|
||||
err = webClient.SendBinaryMessage(conn, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebVoice.Warnln("write:", err)
|
||||
|
@ -115,7 +113,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
logger.Web.Debugln("status get reply")
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs)
|
||||
|
||||
err = client.SendBinaryMessage(conn, raw)
|
||||
err = webClient.SendBinaryMessage(conn, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebVoice.Warnln("write:", err)
|
||||
|
@ -129,7 +127,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
if connForDest != nil { // voice connected
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, cmdID, cmdNumber, args)
|
||||
|
||||
err = client.SendBinaryMessage(connForDest, raw)
|
||||
err = webClient.SendBinaryMessage(connForDest, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebMobile.Warnln("write:", err)
|
||||
|
@ -137,7 +135,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
} else { // voice not connected
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 5456, cmdNumber, "")
|
||||
|
||||
err = client.SendBinaryMessage(conn, raw)
|
||||
err = webClient.SendBinaryMessage(conn, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebMobile.Warnln("write:", err)
|
||||
|
@ -149,7 +147,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
if status == kraProtocol.StatusGet {
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs)
|
||||
|
||||
err = client.SendBinaryMessage(conn, raw)
|
||||
err = webClient.SendBinaryMessage(conn, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebVoice.Warnln("write:", err)
|
||||
|
@ -158,7 +156,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
} else { // err dest unknown
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, "")
|
||||
|
||||
err = client.SendBinaryMessage(conn, raw)
|
||||
err = webClient.SendBinaryMessage(conn, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.WebMobile.Warnln("write:", err)
|
||||
|
@ -167,11 +165,11 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
}
|
||||
}
|
||||
|
||||
if client != nil { // remove cmdID from list
|
||||
if webClient != nil { // remove cmdID from list
|
||||
if isVoice {
|
||||
client.RemoveVoiceCmdID(cmdID)
|
||||
webClient.RemoveVoiceCmdID(cmdID)
|
||||
} else {
|
||||
client.RemoveMobileCmdID(cmdID)
|
||||
webClient.RemoveMobileCmdID(cmdID)
|
||||
}
|
||||
|
||||
/*var newArr []int
|
||||
|
|
Loading…
Reference in New Issue