Modify `SimpleReactPyClient` to not use pre-defined endpoints
Archmonger opened this issue · 1 comments
Current Situation
We currently require a structured/implict routes for SimpleReactPyClient.
/*
* - `_reactpy/stream/${route}${query}`: The websocket endpoint for the stream.
* - `_reactpy/modules`: The directory containing the dynamically loaded modules.
* - `_reactpy/assets`: The directory containing the static assets.
*/ Proposed Actions
Rewrite SimpleReactPyClient to allow the user to define their own routes. Will need a prop for each route.
Similar to reactpy-django, we need the following customization options:
mountId- The string ID of the mountable element
504ef671-57a4-4128-a48d-3ec94c9bfd41
websocketUrl- Path to where the websocket is located at
reactpy/<dotted_path>
jsModulesUrl- Path to where we auto-serve JavaScript modules
reactpy/modules/
reconnectMax- When x many seconds pass, the websocket will give up retries
3600
reconnectInterval- Client will retry to connect to the server every x seconds
5
Note: We need to start treating the client JS file completely separately from other static files. The user needs can't ever configure their static file dir if we rely on it for core behavior.
@rmorshea In order to plan for easy compatibility between template tags and ASGI middleware, I'd like us to remove the hacky URL routing workaround from reactpy/stream/. As we discussed, that's going to require use_messenger to get to that point.
The new websocket URL pattern should be reactpy/<component_dotted_path>/