Backend/servers/minecraft/socketHub.go

40 lines
1.2 KiB
Go

package minecraft
import (
"github.com/gofiber/websocket/v2"
"krakatoa.net/backend/modules/cache"
"krakatoa.net/backend/modules/logger"
"krakatoa.net/backend/modules/structs"
serverCommunication "krakatoa.net/backend/serverCommunication"
)
var register = make(chan *websocket.Conn)
var broadcast = make(chan structs.SocketBroadcastData)
var unregister = make(chan *websocket.Conn)
func RunHub() {
for {
select {
case connection := <-register:
servername := connection.Query("s")
cache.MinecraftClients[servername] = &structs.MinecraftClient{Name: servername, Dest: serverCommunication.GenerateDestForNewMinecraftClient(), Conn: connection}
logger.Minecraft.Debugln("connection registered ", connection.Query("c"), connection)
case data := <-broadcast:
logger.Minecraft.Debugln("message received", data.Msg)
go serverCommunication.HandleMinecraftMessage(data.Conn, data.Msg)
case connection := <-unregister:
for servername, client := range cache.MinecraftClients {
if client.Conn == connection {
delete(cache.MinecraftClients, servername)
logger.Minecraft.Debugln("connection unregistered", servername, connection.Query("s"))
}
}
}
}
}