36 lines
891 B
Go
36 lines
891 B
Go
package httpserver
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/websocket/v2"
|
|
)
|
|
|
|
func (a *App) initAppRoutes() {
|
|
// a.fiber.Group("/users", users.CreateAccount(a.userAPI))
|
|
|
|
a.fiber.Get("/ws/:recipientID", func(c *fiber.Ctx) error {
|
|
if websocket.IsWebSocketUpgrade(c) {
|
|
c.Locals("allowed", true)
|
|
return c.Next()
|
|
}
|
|
return fiber.ErrUpgradeRequired
|
|
}, websocket.New(func(c *websocket.Conn) {
|
|
recipientID := c.Params("recipientID")
|
|
a.NotidicationStore.ConnectWebSocket(context.Background(), recipientID, c)
|
|
|
|
defer a.NotidicationStore.DisconnectWebSocket(recipientID)
|
|
|
|
for {
|
|
_, _, err := c.ReadMessage()
|
|
if err != nil {
|
|
if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) {
|
|
a.Logger.Error("WebSocket error", "recipientID", recipientID, "error", err)
|
|
}
|
|
return
|
|
}
|
|
}
|
|
}))
|
|
}
|