* Wrap websockets with HyperExpress
* Add endpoints on pusher to resolve wokas
* getting textures urls from pusher
* Adding OpenAPI documentation for the pusher.
The pusher now exposes a "/openapi" endpoint and a "/swagger-ui/" endpoint.
* revert FRONT_URL
* playerTextures metadata is being loaded via Phaser.Loader
* fetch textures every time character or customize scene is open
* Heavy changes: refactoring the pusher to always send the textures (and the front to accept them)
* Sending character layer details to admin
* Cleaning commented code
* Fixing regex
* Fix woka endpoints on pusher
* Change error wording on pusher
* Working on integration of the woka-list with the new admin endpoint.
* Switching from "name" to "id" in texture object + using zod for woka/list validation
* Add position on default woka data
* Remove async on pusher option method
* Fix woka list url
* add options for /register
* Fxiing loading the Woka list
* Actually returning something in logout-callback
* Copying messages to back too
* remove customize button if no body parts are available (#1952)
* remove customize button if no body parts are available
* remove unused position field from PlayerTexturesCollection interface
* removed unused label field
* fix LocalUser test
* little PlayerTextures class refactor
* Fixing linting
* Fixing missing Openapi packages in prod
* Fixing back build
Co-authored-by: Hanusiak Piotr <piotr@ltmp.co>
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
* Add returns on pusher endpoints
Co-authored-by: Alexis Faizeau <a.faizeau@workadventu.re>
Co-authored-by: Hanusiak Piotr <piotr@ltmp.co>
Co-authored-by: Piotr Hanusiak <wacneg@gmail.com>
If the back is getting an error (because the user has no right to set a variable),
instead of failing directly, let's try to reload the map (maybe we have cached a wrong version of the map).
This commit increases idle timeout for websocket connection
Issue: after 5 minutes of inactive tab (hidden tab) in Chrome, WorkAdventure was disconnected.
I believe Google was going in "intensive throttling" mode (see https://developer.chrome.com/blog/timer-throttling-in-chrome-88/#intensive-throttling)
This means setTimeouts are run only once per minute.
And I believe the "keep alive" must be implemented with a "setTimeout" (one way or another even if I can't find a trace of this in the code). This would mean that the browser would send keep alive requests only once per minute.
But the pusher is configured to shut the connection after 30 seconds of idle activity.
Therefore, the pusher disconnects inactive Chrome tabs. By raising the Pusher idle timer to 2 minutes, we give a chance to Chrome to send a ping to the server in time (since Chrome won't send more than 1 ping per minute).