diff --git a/extensions/websocket/init.go b/extensions/websocket/init.go index 9261063..980691e 100644 --- a/extensions/websocket/init.go +++ b/extensions/websocket/init.go @@ -21,8 +21,8 @@ func EnableExtension(app *h.App, opts opts.ExtensionOpts) { panic("websocket: SessionId func is required") } - service.Set[wsutil.SocketManager](app.Opts.ServiceLocator, service.Singleton, func() *wsutil.SocketManager { - manager := wsutil.NewSocketManager(&opts) + service.Set[ws.SocketManager](app.Opts.ServiceLocator, service.Singleton, func() *ws.SocketManager { + manager := ws.NewSocketManager(&opts) manager.StartMetrics() return manager }) diff --git a/extensions/websocket/internal/wsutil/handler.go b/extensions/websocket/internal/wsutil/handler.go index 1096dd5..0b320b9 100644 --- a/extensions/websocket/internal/wsutil/handler.go +++ b/extensions/websocket/internal/wsutil/handler.go @@ -6,6 +6,7 @@ import ( "github.com/gobwas/ws" "github.com/gobwas/ws/wsutil" ws2 "github.com/maddalax/htmgo/extensions/websocket/opts" + ws3 "github.com/maddalax/htmgo/extensions/websocket/ws" "github.com/maddalax/htmgo/framework/h" "github.com/maddalax/htmgo/framework/service" "log/slog" @@ -25,7 +26,7 @@ func WsHttpHandler(opts *ws2.ExtensionOpts) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { cc := r.Context().Value(h.RequestContextKey).(*h.RequestContext) locator := cc.ServiceLocator() - manager := service.Get[SocketManager](locator) + manager := service.Get[ws3.SocketManager](locator) sessionId := opts.SessionId(cc) @@ -46,7 +47,7 @@ func WsHttpHandler(opts *ws2.ExtensionOpts) http.HandlerFunc { we don't want to block the writer */ done := make(chan bool, 1000) - writer := make(WriterChan, 1000) + writer := make(ws3.WriterChan, 1000) wg := sync.WaitGroup{} diff --git a/extensions/websocket/ws/access.go b/extensions/websocket/ws/access.go index efa63c5..012d859 100644 --- a/extensions/websocket/ws/access.go +++ b/extensions/websocket/ws/access.go @@ -1,10 +1,9 @@ package ws import ( - "github.com/maddalax/htmgo/extensions/websocket/internal/wsutil" "github.com/maddalax/htmgo/framework/h" ) -func ManagerFromCtx(ctx *h.RequestContext) *wsutil.SocketManager { - return wsutil.SocketManagerFromCtx(ctx) +func ManagerFromCtx(ctx *h.RequestContext) *SocketManager { + return SocketManagerFromCtx(ctx) } diff --git a/extensions/websocket/ws/dispatch.go b/extensions/websocket/ws/dispatch.go index 248b649..53ed0f3 100644 --- a/extensions/websocket/ws/dispatch.go +++ b/extensions/websocket/ws/dispatch.go @@ -1,7 +1,6 @@ package ws import ( - "github.com/maddalax/htmgo/extensions/websocket/internal/wsutil" "github.com/maddalax/htmgo/extensions/websocket/session" "github.com/maddalax/htmgo/framework/h" "github.com/maddalax/htmgo/framework/service" @@ -33,7 +32,7 @@ func PushElement(data HandlerData, el *h.Element) bool { // PushElementCtx sends an element to the current session and swaps it into the page func PushElementCtx(ctx *h.RequestContext, el *h.Element) bool { locator := ctx.ServiceLocator() - socketManager := service.Get[wsutil.SocketManager](locator) + socketManager := service.Get[SocketManager](locator) socketId := session.GetSessionId(ctx) socket := socketManager.Get(string(socketId)) if socket == nil { diff --git a/extensions/websocket/ws/every.go b/extensions/websocket/ws/every.go index 679d3d5..d549c53 100644 --- a/extensions/websocket/ws/every.go +++ b/extensions/websocket/ws/every.go @@ -1,7 +1,6 @@ package ws import ( - "github.com/maddalax/htmgo/extensions/websocket/internal/wsutil" "github.com/maddalax/htmgo/extensions/websocket/session" "github.com/maddalax/htmgo/framework/h" "github.com/maddalax/htmgo/framework/service" @@ -12,7 +11,7 @@ import ( func Every(ctx *h.RequestContext, interval time.Duration, cb func() bool) { socketId := session.GetSessionId(ctx) locator := ctx.ServiceLocator() - manager := service.Get[wsutil.SocketManager](locator) + manager := service.Get[SocketManager](locator) manager.RunIntervalWithSocket(string(socketId), interval, cb) } diff --git a/extensions/websocket/ws/handler.go b/extensions/websocket/ws/handler.go index 2d0bbb7..07c3080 100644 --- a/extensions/websocket/ws/handler.go +++ b/extensions/websocket/ws/handler.go @@ -2,16 +2,15 @@ package ws import ( "fmt" - "github.com/maddalax/htmgo/extensions/websocket/internal/wsutil" "github.com/maddalax/htmgo/extensions/websocket/session" "sync" ) type MessageHandler struct { - manager *wsutil.SocketManager + manager *SocketManager } -func NewMessageHandler(manager *wsutil.SocketManager) *MessageHandler { +func NewMessageHandler(manager *SocketManager) *MessageHandler { return &MessageHandler{manager: manager} } @@ -77,7 +76,7 @@ func (h *MessageHandler) OnDomElementRemoved(handlerId string) { handlers.Delete(handlerId) } -func (h *MessageHandler) OnSocketDisconnected(event wsutil.SocketEvent) { +func (h *MessageHandler) OnSocketDisconnected(event SocketEvent) { sessionId := session.Id(event.SessionId) hashes, ok := sessionIdToHashes.Load(sessionId) if ok { diff --git a/extensions/websocket/ws/listener.go b/extensions/websocket/ws/listener.go index 5556331..9b4965b 100644 --- a/extensions/websocket/ws/listener.go +++ b/extensions/websocket/ws/listener.go @@ -1,13 +1,12 @@ package ws import ( - "github.com/maddalax/htmgo/extensions/websocket/internal/wsutil" "github.com/maddalax/htmgo/extensions/websocket/session" "github.com/maddalax/htmgo/framework/service" ) func StartListener(locator *service.Locator) { - manager := service.Get[wsutil.SocketManager](locator) + manager := service.Get[SocketManager](locator) manager.Listen(socketMessageListener) handler := NewMessageHandler(manager) go func() { @@ -23,9 +22,9 @@ func handle(handler *MessageHandler) { handler.OnServerSideEvent(event) case event := <-socketMessageListener: switch event.Type { - case wsutil.DisconnectedEvent: + case DisconnectedEvent: handler.OnSocketDisconnected(event) - case wsutil.MessageEvent: + case MessageEvent: handlerId, ok := event.Payload["id"].(string) eventName, ok2 := event.Payload["event"].(string) diff --git a/extensions/websocket/internal/wsutil/manager.go b/extensions/websocket/ws/manager.go similarity index 99% rename from extensions/websocket/internal/wsutil/manager.go rename to extensions/websocket/ws/manager.go index d274fe1..6fd6db6 100644 --- a/extensions/websocket/internal/wsutil/manager.go +++ b/extensions/websocket/ws/manager.go @@ -1,4 +1,4 @@ -package wsutil +package ws import ( "fmt" diff --git a/extensions/websocket/internal/wsutil/manager_test.go b/extensions/websocket/ws/manager_test.go similarity index 99% rename from extensions/websocket/internal/wsutil/manager_test.go rename to extensions/websocket/ws/manager_test.go index 0ba95d4..3c05a6f 100644 --- a/extensions/websocket/internal/wsutil/manager_test.go +++ b/extensions/websocket/ws/manager_test.go @@ -1,4 +1,4 @@ -package wsutil +package ws import ( ws2 "github.com/maddalax/htmgo/extensions/websocket/opts" diff --git a/extensions/websocket/ws/metrics.go b/extensions/websocket/ws/metrics.go index 258493b..29bbe79 100644 --- a/extensions/websocket/ws/metrics.go +++ b/extensions/websocket/ws/metrics.go @@ -1,12 +1,11 @@ package ws import ( - "github.com/maddalax/htmgo/extensions/websocket/internal/wsutil" "github.com/maddalax/htmgo/framework/h" ) type Metrics struct { - Manager wsutil.ManagerMetrics + Manager ManagerMetrics Handler HandlerMetrics } diff --git a/extensions/websocket/ws/register.go b/extensions/websocket/ws/register.go index b7350fd..d24d0d1 100644 --- a/extensions/websocket/ws/register.go +++ b/extensions/websocket/ws/register.go @@ -1,7 +1,6 @@ package ws import ( - "github.com/maddalax/htmgo/extensions/websocket/internal/wsutil" "github.com/maddalax/htmgo/extensions/websocket/session" "github.com/maddalax/htmgo/framework/h" "github.com/puzpuzpuz/xsync/v3" @@ -11,8 +10,8 @@ import ( type HandlerData struct { SessionId session.Id - Socket *wsutil.SocketConnection - Manager *wsutil.SocketManager + Socket *SocketConnection + Manager *SocketManager } type Handler func(data HandlerData) @@ -29,7 +28,7 @@ var sessionIdToHashes = xsync.NewMapOf[session.Id, map[KeyHash]bool]() var hashesToSessionId = xsync.NewMapOf[KeyHash, session.Id]() var serverEventNamesToHash = xsync.NewMapOf[string, map[KeyHash]bool]() -var socketMessageListener = make(chan wsutil.SocketEvent, 100) +var socketMessageListener = make(chan SocketEvent, 100) var serverSideMessageListener = make(chan ServerSideEvent, 100) var lock = sync.Mutex{} var callingHandler = atomic.Bool{}