package dbm import ( "encoding/json" "github.com/gin-gonic/gin" "github.com/tecamino/tecamino-dbm/auth" json_dataModels "github.com/tecamino/tecamino-json_data/models" ) const ( OnCreate = "onCreate" OnChange = "onChange" OnDelete = "onDelete" ) func (d *DBMHandler) WebSocket(c *gin.Context) { id, err := auth.GetIDFromQuery(c) if err != nil { d.Log.Error("dbmHandler.webSocket.Websocket", "error GetIDFromQuery: "+err.Error()) return } d.Log.Debug("dbmHandler.webSocket.Websocket", "authorization id token: "+id) client, err := d.Conns.ConnectNewClient(id, c) if err != nil { d.Log.Error("dbmHandler.webSocket.Websocket", err) return } client.OnMessage = func(data []byte) { request, err := d.readJsonData(data) if err != nil { d.Log.Error("dbmHandler.webSocket.Websocket", "read json: "+err.Error()) } // Sets d.Get(request, id) // Sets d.Set(request, id) // Subscribe d.Subscribe(request, id) // Unsubscribe d.Unsubscribe(request, id) } client.OnError = func(err error) { d.Log.Error("dbmHandler.webSocket.Websocket", "error on websocket connection: "+err.Error()) } } func (d *DBMHandler) readJsonData(data []byte) (request *json_dataModels.Request, err error) { err = json.Unmarshal(data, &request) return }