partey_workadventure/docs/dev/wokas.md
David Négrier 6540f15c5b
Refactoring Woka management (#1810)
* 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>
2022-03-11 17:02:58 +01:00

1.1 KiB

About Wokas

Wokas are made of a set of layers (for custom wokas), or of only 1 layers (if selected from the first screen)

Internally, each layer has:

  • a name
  • a URL

Connection to a map

When a user connects to a map, it sends, as a web-socket parameter, the list of layer names.

The pusher is in charge of converting those layer names into the URLs. This way, a client cannot send any random URL to the pusher.

When the pusher receives the layer names, it validates these names and sends back the URLs + sends the names+urls to the back. If the layers cannot be validated, the websocket connections sends an error message and closes. The user is sent back to the "choose your Woka" screen.

Getting the list of available Wokas

The pusher can send the list of available Wokas to the user. It can actually query the admin for this list, if needed (= if an admin is configured)

In the pusher

The pusher contains a classes in charge of managing the Wokas:

  • LocalWokaService: used when no admin is connected. Returns a hard-coded list of Wokas (stored in pusher/data/woka.json).
  • AdminWokaService: used to delegate the list of Wokas to the admin.