♻️ Use dealer's websocket service instead of own
This commit is contained in:
		| @@ -1,48 +0,0 @@ | ||||
| package api | ||||
|  | ||||
| import ( | ||||
| 	"git.solsynth.dev/hydrogen/messaging/pkg/internal/models" | ||||
| 	"git.solsynth.dev/hydrogen/messaging/pkg/internal/services" | ||||
| 	"github.com/gofiber/contrib/websocket" | ||||
| 	jsoniter "github.com/json-iterator/go" | ||||
| 	"github.com/rs/zerolog/log" | ||||
| ) | ||||
|  | ||||
| func messageGateway(c *websocket.Conn) { | ||||
| 	user := c.Locals("user").(models.Account) | ||||
|  | ||||
| 	// Push connection | ||||
| 	services.ClientRegister(user, c) | ||||
| 	log.Debug().Uint("user", user.ID).Msg("New websocket connection established...") | ||||
|  | ||||
| 	// Event loop | ||||
| 	var task models.UnifiedCommand | ||||
|  | ||||
| 	var messageType int | ||||
| 	var packet []byte | ||||
| 	var err error | ||||
|  | ||||
| 	for { | ||||
| 		if messageType, packet, err = c.ReadMessage(); err != nil { | ||||
| 			break | ||||
| 		} else if err := jsoniter.Unmarshal(packet, &task); err != nil { | ||||
| 			_ = c.WriteMessage(messageType, models.UnifiedCommand{ | ||||
| 				Action:  "error", | ||||
| 				Message: "unable to unmarshal your command, requires json request", | ||||
| 			}.Marshal()) | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		message := services.DealCommand(task, user) | ||||
|  | ||||
| 		if message != nil { | ||||
| 			if err = c.WriteMessage(messageType, message.Marshal()); err != nil { | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Pop connection | ||||
| 	services.ClientUnregister(user, c) | ||||
| 	log.Debug().Uint("user", user.ID).Msg("A websocket connection disconnected...") | ||||
| } | ||||
| @@ -1,8 +1,6 @@ | ||||
| package api | ||||
|  | ||||
| import ( | ||||
| 	"git.solsynth.dev/hydrogen/messaging/pkg/internal/gap" | ||||
| 	"github.com/gofiber/contrib/websocket" | ||||
| 	"github.com/gofiber/fiber/v2" | ||||
| ) | ||||
|  | ||||
| @@ -47,12 +45,5 @@ func MapAPIs(app *fiber.App) { | ||||
| 			channels.Delete("/:channel/calls/ongoing", endCall) | ||||
| 			channels.Post("/:channel/calls/ongoing/token", exchangeCallToken) | ||||
| 		} | ||||
|  | ||||
| 		api.Use(func(c *fiber.Ctx) error { | ||||
| 			if err := gap.H.EnsureAuthenticated(c); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			return c.Next() | ||||
| 		}).Get("/ws", websocket.New(messageGateway)) | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user