# Remote Canvas
An adapter for Browser-based canvas implementations into a Rust application at scale.
## Goals
* Provide a scalable way to use a browser-based Canvas implementation in Rust applications.
* Take advantage of multiple browsers at the same time
* Provide a nearly-identical API to 2D context rendering.
## Future Goals
* Provide a nearly-identical API to WebGL context rendering.
* Integrate with local Chrome install or a Docker cluster of Chrome containers in order to provide a connected browser on demand.
## Limitations
* A browser may disappear at any time which will destroy all attached Canvas' at the API level. It is up to the end user to restart their context.
* This is intentional as, while tracking the context transactionally to restart it is relatively easy, it may have significant performance issues.
* Unless load is sufficiently high, only one browser will be used.
* This is due to the use of `async_std`'s MPMC `channel` versus a proper load balancing solution.
* A long term solution may be a load balance job.
* No browser authentication