38 lines
877 B
Go
38 lines
877 B
Go
package socketserver
|
|
|
|
import (
|
|
"clickandjoin.app/websocketserver/modules/structs"
|
|
gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper"
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/websocket/v2"
|
|
)
|
|
|
|
func WebSocketServer(app *fiber.App) {
|
|
app.Get("/", websocket.New(func(c *websocket.Conn) {
|
|
defer func() {
|
|
unregister <- c
|
|
c.Close()
|
|
}()
|
|
|
|
register <- &structs.SocketClient{Conn: c}
|
|
|
|
for {
|
|
messageType, msg, err := c.ReadMessage()
|
|
|
|
if err != nil {
|
|
if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) {
|
|
gocnjhelper.LogErrorf("Read err: %s", err)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
if messageType == websocket.TextMessage {
|
|
broadcast <- structs.SocketMessage{Conn: c, Msg: msg}
|
|
} else {
|
|
gocnjhelper.LogDebugf("websocket message received of type %s", messageType)
|
|
}
|
|
}
|
|
}))
|
|
}
|