45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package socketserver
|
|
|
|
import (
|
|
"clickandjoin.app/managementsystem/modules/cache"
|
|
"clickandjoin.app/managementsystem/modules/structs"
|
|
"clickandjoin.app/managementsystem/socketclients"
|
|
gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper"
|
|
"github.com/gofiber/websocket/v2"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
var register = make(chan *structs.SocketClient)
|
|
var broadcast = make(chan structs.SocketMessage)
|
|
var unregister = make(chan *websocket.Conn)
|
|
|
|
func RunHub() {
|
|
for {
|
|
select {
|
|
case newSocketClient := <-register:
|
|
newSocketClient.ClientId = uuid.New().String()
|
|
|
|
gocnjhelper.LogDebugf("clients: %d %s", len(cache.GetSocketClients()), cache.GetSocketClients())
|
|
|
|
gocnjhelper.LogDebugf("REGISTER CLIENT: %s", newSocketClient.ClientId)
|
|
|
|
cache.AddSocketClient(newSocketClient.ClientId, newSocketClient)
|
|
|
|
socketclients.BroadcastViewersCountMessage(1)
|
|
|
|
case data := <-broadcast:
|
|
gocnjhelper.LogDebugf("RECEIVED WEBSOCKET MESSAGE: %s", data.Msg)
|
|
|
|
case connection := <-unregister:
|
|
for id, client := range cache.GetSocketClients() {
|
|
if connection == client.Conn {
|
|
gocnjhelper.LogDebugf("UNREGISTER CLIENT: %s", id)
|
|
cache.DeleteClient(id)
|
|
|
|
socketclients.BroadcastViewersCountMessage(0)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|