ತಂಗಿ [tangi] Kan. younger sister
ಅಕ್ಕ [akka] Kan. older sister
Lightweight actor library for Web Workers inspired by Akka.
Type-safe, production-ready and lightweight messaging layer for Web Workers.
Best served with:
For people to scale Web Workers beyond the simple patterns of communication.
messages.ts
type PingMessage = {
_tag: "PING";
}
type PongMessage = {
_tag: "PONG";
}
main.ts
import { makeActorContext } from "tangi";
import { PingMessage, PongMessage } from "./messages";
const worker = new (require("worker-loader!./worker"))();
const workerRemoteContext = makeActorContext<PingMessage, never>(worker);
const response = await workerRemoteContext.ask<string, PongMessage>(id => ({ _tag: "PING", id }));
switch (response._tag) {
case "Right": {
console.log(response.right);
}
case "Left": {
console.error(response.left);
}
}
worker.ts
import { makeActorContext, REPLY } from "tangi";
import { PongMessage } from "./messages";
const workerLocalContext = makeActorContext<never, PongMessage>(globalThis as any);
workerLocalContext.receiveMessage(message => {
switch (message._tag) {
case "PING": {
message[REPLY]({ _tag: "PONG" });
return;
}
}
});