diff --git a/.gitignore b/.gitignore index 51241801..fd623898 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ *.exe -/*-poc *.sqlite *.db *.blend[0-9] diff --git a/Makefile b/Makefile index b63a27e4..758a139b 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ with-deps: go get github.com/golang/mock/mockgen@v1.6.0 $(MAKE) application -application: flamenco-manager flamenco-worker socketio-poc +application: flamenco-manager flamenco-worker flamenco-manager: go build -v ${BUILD_FLAGS} ${PKG}/cmd/flamenco-manager @@ -28,9 +28,6 @@ flamenco-manager: flamenco-worker: go build -v ${BUILD_FLAGS} ${PKG}/cmd/flamenco-worker -socketio-poc: - go build -v ${BUILD_FLAGS} ${PKG}/cmd/socketio-poc - generate: generate-go generate-py generate-js generate-go: @@ -112,7 +109,7 @@ test: clean: @go clean -i -x - rm -f flamenco*-v* flamenco-manager flamenco-worker socketio-poc *.exe + rm -f flamenco*-v* flamenco-manager flamenco-worker *.exe rm -f pkg/api/*.gen.go internal/*/mocks/*.gen.go internal/*/*/mocks/*.gen.go @$(MAKE) generate @@ -124,4 +121,4 @@ package: flamenco-manager flamenco-worker rm -rf dist/flamenco -.PHONY: application version flamenco-manager flamenco-worker socketio-poc generate generate-go generate-py with-deps swagger-ui list-embedded test clean +.PHONY: application version flamenco-manager flamenco-worker generate generate-go generate-py with-deps swagger-ui list-embedded test clean diff --git a/cmd/socketio-poc/main.go b/cmd/socketio-poc/main.go deleted file mode 100644 index 5fefecbf..00000000 --- a/cmd/socketio-poc/main.go +++ /dev/null @@ -1,116 +0,0 @@ -package main - -import ( - "time" - - "github.com/labstack/echo/v4" - "github.com/labstack/echo/v4/middleware" - "github.com/mattn/go-colorable" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" - "github.com/ziflex/lecho/v3" - - gosocketio "github.com/graarh/golang-socketio" - "github.com/graarh/golang-socketio/transport" - - "git.blender.org/flamenco/internal/appinfo" -) - -type Message struct { - Name string `json:"name"` - Text string `json:"text"` -} - -func socketIOServer() *gosocketio.Server { - sio := gosocketio.NewServer(transport.GetDefaultWebsocketTransport()) - log.Info().Msg("initialising SocketIO") - - // socket connection - sio.On(gosocketio.OnConnection, func(c *gosocketio.Channel) { - log.Info().Str("clientID", c.Id()).Msg("connected") - c.Join("Room") - }) - - // socket disconnection - sio.On(gosocketio.OnDisconnection, func(c *gosocketio.Channel) { - log.Info().Str("clientID", c.Id()).Msg("disconnected") - c.Leave("Room") - }) - - sio.On(gosocketio.OnError, func(c *gosocketio.Channel) { - log.Warn().Interface("c", c).Msg("socketio error") - }) - - // chat socket - sio.On("/chat", func(c *gosocketio.Channel, message Message) string { - log.Info().Str("clientID", c.Id()). - Str("text", message.Text). - Str("name", message.Name). - Msg("message received") - c.BroadcastTo("Room", "/message", message.Text) - return "message sent successfully." - }) - - return sio -} - -func addRoutes(router *echo.Echo, server *gosocketio.Server) { - cors := middleware.CORSWithConfig(middleware.CORSConfig{ - AllowOrigins: []string{"http://localhost:8080/", "http://localhost:8081/"}, - - // List taken from https://www.bacancytechnology.com/blog/real-time-chat-application-using-socketio-golang-vuejs/ - AllowHeaders: []string{ - echo.HeaderAccept, - echo.HeaderAcceptEncoding, - echo.HeaderAccessControlAllowOrigin, - echo.HeaderAccessControlRequestHeaders, - echo.HeaderAccessControlRequestMethod, - echo.HeaderAuthorization, - echo.HeaderContentLength, - echo.HeaderContentType, - echo.HeaderOrigin, - echo.HeaderXCSRFToken, - echo.HeaderXRequestedWith, - "Cache-Control", - "Connection", - "Host", - "Referer", - "User-Agent", - "X-header", - }, - AllowMethods: []string{"POST", "GET", "OPTIONS", "PUT", "DELETE"}, - }) - - router.Any("/socket.io/", echo.WrapHandler(server), cors) - -} - -func main() { - output := zerolog.ConsoleWriter{Out: colorable.NewColorableStdout(), TimeFormat: time.RFC3339} - log.Logger = log.Output(output) - log.Info().Str("version", appinfo.ApplicationVersion).Msgf("starting Socket.IO PoC %v", appinfo.ApplicationName) - - socketio := socketIOServer() - - e := echo.New() - e.HideBanner = true - e.HidePort = true - - // Hook Zerolog onto Echo: - e.Use(lecho.Middleware(lecho.Config{ - Logger: lecho.From(log.Logger), - })) - - // Ensure panics when serving a web request won't bring down the server. - e.Use(middleware.Recover()) - - addRoutes(e, socketio) - - listen := ":8081" - log.Info().Str("listen", listen).Msg("server starting") - log.Info().Msg("Run `yarn serve` from the 'web' dir to run the frontend server") - - // Start the web server. - finalErr := e.Start(listen) - log.Warn().Err(finalErr).Msg("shutting down") -}