New: echo websockets

This commit is contained in:
2025-08-13 09:10:26 +00:00
parent 7bbd8fc295
commit a6570d463a
3 changed files with 49 additions and 0 deletions

34
main.go
View File

@ -11,6 +11,7 @@ import (
"git.kocoder.xyz/kocoded/vt/query"
"git.kocoder.xyz/kocoded/vt/routers"
"git.kocoder.xyz/kocoded/vt/utils"
"github.com/gofiber/contrib/websocket"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/compress"
"github.com/gofiber/fiber/v2/middleware/cors"
@ -39,6 +40,39 @@ func main() {
routers.RegisterAnsprechpartnerRouter(app.Group("/v1/ansprechpartner"), logger)
routers.RegisterFirmaRouter(app.Group("/v1/firma"), logger)
app.Use("/ws", func(c *fiber.Ctx) error {
if websocket.IsWebSocketUpgrade(c) {
c.Locals("allowed", true)
return c.Next()
}
return fiber.ErrUpgradeRequired
})
app.Get("/ws/:id<int>", websocket.New(func(c *websocket.Conn) {
log.Println(c.Locals("allowed")) // true
log.Println(c.Params("id")) // 123
log.Println(c.Query("v")) // 1.0
log.Println(c.Cookies("session")) // ""
var (
mt int
msg []byte
err error
)
for {
if mt, msg, err = c.ReadMessage(); err != nil {
slog.Info("read", "error", err)
break
}
slog.Info("recv:", "messageType", mt, "bytes", msg)
if err = c.WriteMessage(mt, msg); err != nil {
slog.Info("write", "error", err)
break
}
}
}))
log.Fatalln(app.Listen(":3000"))
}