ethanmdavidson / KotlinJSWebWorkerDemo

A simple demo that shows how WebWorkers can be used in Kotlin/JS

Home Page:https://ethanmdavidson.github.io/KotlinJSWebWorkerDemo/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Web Workers in KotlinJS

This repo demonstrates how to set up a Web Worker in Kotlin/JS. It is a very simple demo that creates a new worker that sends back the current time.

Check out the live demo!

How does it work?

By setting up an additional compilation target so that two separate .js files will be generated. The client code (which runs in the main execution thread) can then spawn a worker that executes the worker code.

This allows us to share the commonMain code between both client and worker, without requiring the worker to have all the client code (and vice versa). This "separation of concerns" makes the code simpler and helps keep file sizes low.

Limitations

The jsBrowserRun tasks currently don't work because (I think) webpack isn't serving the worker code. I think this can be fixed with a little gradle magic but I haven't got it figured out yet.

Running the built files locally is just a tiny bit more difficult than usual because you can't just open index.html and have everything work; the worker.js script is blocked because of security things. The simple workaround is to run an http server in that dir. For example, with python you can

cd build/distributions && python -m http.server

and then open your browser to the port it's hosting on (probably localhost:8000)

About

A simple demo that shows how WebWorkers can be used in Kotlin/JS

https://ethanmdavidson.github.io/KotlinJSWebWorkerDemo/

License:MIT License


Languages

Language:Kotlin 96.1%Language:HTML 3.9%