What is Acio.js?
The jobs run securely and goes unnoticeable for the browser’s final user.
Acio.js library can run multiple jobs in multiple processors making the most of each browser captabilities.
How does it work?
Apart from the database - where the jobs and their results are stored - Acio-js is formed by other elements: the library, the jobs server and the admin panel.
The library uses web sockets  to deliver jobs and collect results, web workers  for client-side secure code execution and indexedDB  for storage.
When a browser loads the library, configured to point to an specific server address:
- It connects to the jobs server.
- Loads pending jobs from the browser storage system - or asks for a new job to the server.
- Performs the job in the browser.
- Sends the results back to the jobs server via result
- Depending on result parameters, the server can send another job to the client, or the client can be added to an available pool of clients waiting for new jobs.
Things to know
Database: It uses MongoDB. The schemas for the collections are available at acio-js-panel/common/collections.
Jobs server: It’s a NodeJS web server using express. Available at acio-js repository.
Web Sockets: used for low-latency communication. Acio-js uses socket.io.
Web Storage: Acio-js uses a disponibility fallback for choosing a storage system. In most cases - as of modern browsers - the solution to use is indexedDB .
How to embed the library?
Simple. Just add the following code to the website or web application:
<script> var worker = new Worker('/lib.js'); worker.postMessage('endpoint.http://localhost:3000'); worker.postMessage('start'); </script>
How to manage jobs?
Jobs and results can be managed via acio-js-panel, an administration panel built in MeteorJS. Visit its repository for instructions on how to install.
Where can I ready about the topic?
- Collaborative Map-Reduce in the Browser
- Data-Intensive Scalable Computing - Brown University Course resources