Thomas van Weert
9edcb83fc4
CHG: use concurrent map instead of regular map with lock DEL: global session control, moved to per server only DEL: unused command system
66 lines
1.4 KiB
Go
Executable file
66 lines
1.4 KiB
Go
Executable file
package data
|
|
|
|
import (
|
|
"github.com/Mindgamesnl/socketio"
|
|
"github.com/ParadoxPixel/ThemePark-Websocket/data"
|
|
"github.com/ParadoxPixel/ThemePark-Websocket/objects"
|
|
"log"
|
|
"strings"
|
|
)
|
|
|
|
func Load(namespace socketio.Namespace, debug bool) {
|
|
namespace.OnEvent("data", func(so socketio.Socket, msg string) {
|
|
isServer := so.GetQuery().Get("type") == "server"
|
|
var ok bool
|
|
var server *objects.Server
|
|
var err error
|
|
if !isServer {
|
|
ok, server = data.HasServer(so.GetQuery().Get("control_id"))
|
|
if !ok {
|
|
if debug {
|
|
log.Println(
|
|
"No server found with id:",
|
|
so.GetQuery().Get("control_id"),
|
|
"for client:",
|
|
so.GetQuery().Get("token"),
|
|
)
|
|
}
|
|
return
|
|
}
|
|
|
|
err = server.Socket.Emit("data", msg)
|
|
if err != nil && debug {
|
|
log.Println("error while sending data to server:", err)
|
|
}
|
|
return
|
|
}
|
|
|
|
ok, server = data.HasServer(so.GetQuery().Get("id"))
|
|
if msg[0] == '{' {
|
|
err = server.Socket.EmitError("messages can only be send to clients")
|
|
if err != nil && debug {
|
|
log.Println("error while sending data to server:", err)
|
|
}
|
|
return
|
|
}
|
|
|
|
args := strings.SplitN(msg, "@", 2)
|
|
ok, session := server.HasSession(args[0])
|
|
if !ok {
|
|
if debug {
|
|
log.Println(
|
|
"Unable to send packet from server:",
|
|
server.ID,
|
|
"to client:",
|
|
args[0],
|
|
)
|
|
}
|
|
return
|
|
}
|
|
|
|
err = session.Emit("data", args[1])
|
|
if err != nil && debug {
|
|
log.Println("error while sending data to server:", err)
|
|
}
|
|
})
|
|
}
|