ss-keel-ws
ss-keel-ws adds WebSocket support to ss-keel-core applications. Built on top of Fiberâs WebSocket middleware, it provides a clean integration with the controller and module patterns.
Planned Installation
Section titled âPlanned Installationâgo get github.com/slice-soft/ss-keel-wsPlanned Usage
Section titled âPlanned UsageâBasic WebSocket Handler
Section titled âBasic WebSocket Handlerâimport "github.com/slice-soft/ss-keel-ws"
type ChatController struct{}
func (c *ChatController) Routes() []core.Route { return []core.Route{ ssws.GET("/ws/chat", c.handleChat). Tag("chat"). Describe("Chat WebSocket connection"), }}
func (c *ChatController) handleChat(conn *ssws.Conn) error { for { msgType, msg, err := conn.ReadMessage() if err != nil { return err } // echo back conn.WriteMessage(msgType, msg) }}With Authentication
Section titled âWith Authenticationâcore.GET("/ws/chat", c.handleChat). Use(jwtGuard.Middleware()) // validate token before upgradeBroadcasting
Section titled âBroadcastingâhub := ssws.NewHub()
func (c *ChatController) handleChat(conn *ssws.Conn) error { hub.Register(conn) defer hub.Unregister(conn)
for { _, msg, err := conn.ReadMessage() if err != nil { return err } hub.Broadcast(msg) // send to all connected clients }}hub := ssws.NewHub()
func (c *ChatController) handleRoom(conn *ssws.Conn) error { roomID := conn.Params("room") hub.Join(conn, roomID) defer hub.Leave(conn, roomID)
for { _, msg, err := conn.ReadMessage() if err != nil { return err } hub.BroadcastTo(roomID, msg) }}