46 lines
950 B
Go
46 lines
950 B
Go
package server
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/gorilla/websocket"
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
var upgrader = websocket.Upgrader{}
|
|
|
|
type WebsocketServer struct {
|
|
router *echo.Echo
|
|
}
|
|
|
|
func (s *WebsocketServer) Initialize(authenticator *Authenticator) {
|
|
//s.router.Use(authenticator.Authenticate("/ws/terminal", []string{}))
|
|
s.router.GET("/ws", s.handle)
|
|
}
|
|
|
|
func (s *WebsocketServer) handle(context echo.Context) error {
|
|
//authContext := context.(AuthContext)
|
|
ws, err := upgrader.Upgrade(context.Response(), context.Request(), nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer ws.Close()
|
|
|
|
for {
|
|
messageType, messageBytes, err := ws.ReadMessage()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if messageType == websocket.TextMessage {
|
|
var messageObject map[string]any
|
|
json.Unmarshal(messageBytes, &messageObject)
|
|
fmt.Println(messageObject)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (s *WebsocketServer) SetRouter(router *echo.Echo) {
|
|
s.router = router
|
|
}
|