WebSocketServer/socketserver/server.go

38 lines
817 B
Go

package socketserver
import (
"clickandjoin.app/websocketserver/modules/structs"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/websocket/v2"
"github.com/sirupsen/logrus"
)
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) {
logrus.Errorln("Read err:", err)
}
return
}
if messageType == websocket.TextMessage {
broadcast <- structs.SocketMessage{Conn: c, Msg: msg}
} else {
logrus.Println("websocket message received of type", messageType)
}
}
}))
}