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