New: echo websockets
This commit is contained in:
34
main.go
34
main.go
@ -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"))
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user