بنقرة واحدة
iii-browser-sdk
// Browser SDK for connecting to the iii engine from web applications via WebSocket. Use when building browser-based clients that register functions, invoke triggers, or consume streams from the frontend.
// Browser SDK for connecting to the iii engine from web applications via WebSocket. Use when building browser-based clients that register functions, invoke triggers, or consume streams from the frontend.
Binary streaming between workers via channels. Use when building data pipelines, file transfers, streaming responses, or any pattern requiring binary data transfer between functions.
Registers cron triggers with 7-field expressions to run functions on recurring schedules. Use when scheduling periodic jobs, timed automation, crontab replacements, cleanup routines, report generation, batch processing, or calendar-based work that is genuinely time-driven.
Builds custom trigger types for events iii does not handle natively. Use when integrating webhooks, file watchers, IoT devices, database CDC, or any external event source.
Configures the iii engine via iii-config.yaml — workers, adapters, queue configs, ports, and environment variables. Use when deploying, tuning, or customizing the engine.
Handle iii engine and SDK errors across Node, Python, Rust, and browser workers. Use when interpreting error codes, retryability, RBAC denial, timeouts, handler failures, or SDK-specific exception surfaces.
Registers functions and triggers on the iii engine across TypeScript, Python, and Rust. Use when creating workers, registering function handlers, binding triggers, or invoking functions across languages.
| name | iii-browser-sdk |
| description | Browser SDK for connecting to the iii engine from web applications via WebSocket. Use when building browser-based clients that register functions, invoke triggers, or consume streams from the frontend. |
The browser-optimized SDK for connecting web applications to the iii engine.
Full API reference: https://iii.dev/docs/api-reference/sdk-browser
npm install iii-browser-sdk
| Export | Purpose |
|---|---|
registerWorker(address, options?) | Connect to the engine via WebSocket |
registerFunction(id, handler, options?) | Register a browser-side function handler |
registerTrigger({ type, function_id, config }) | Bind a trigger to a function |
trigger({ function_id, payload, action?, timeoutMs? }) | Invoke a function |
TriggerAction.Void() | Fire-and-forget invocation mode |
TriggerAction.Enqueue({ queue }) | Durable async invocation mode |
registerTriggerType({ id, description }, handler) | Custom trigger type registration |
createChannel() | Binary/text streaming between workers |
addConnectionStateListener(handler) | Observe connect/disconnect state |
Logger export — use browser console or your own loggingws:// or wss:// URL (no registerWorker URL options)iii-worker-manager port.import { registerWorker, TriggerAction } from 'iii-browser-sdk'
const iii = registerWorker('ws://localhost:49135?token=dev-token')
iii.registerFunction('ui::greet', async (data) => {
return { message: `Hello, ${data.name}!` }
})
const result = await iii.trigger({
function_id: 'backend::get-user',
payload: { userId: '123' },
})
await iii.trigger({
function_id: 'analytics::track',
payload: { event: 'page_view' },
action: TriggerAction.Void(),
})
Code using this pattern commonly includes, when relevant:
registerWorker('ws://host:49135?token=...') — connect from browser to an RBAC listenerregisterWorker('wss://host:49135?token=...') — connect with TLS in productioniii.registerFunction(id, handler) — register browser-side handleriii.trigger({ function_id, payload }) — call server-side functionsiii.trigger({ ..., action: TriggerAction.Void() }) — fire-and-forget from browserconst { writer, reader, readerRef, writerRef } = await iii.createChannel() — create a channelwriter.sendBinary(uint8Array) / writer.sendMessage(text) — send channel datareader.onBinary(callback) / reader.onMessage(callback) / reader.readAll() — consume channel dataiii.addConnectionStateListener(listener) — update UI on reconnectsiii-node-sdk.iii-channels.iii-worker-rbac.iii-python-sdk or iii-rust-sdk.iii-browser-sdk when the client is a web browser.iii-browser-sdk in the iii engine.