Skip to content

Class: MessageHelper<_TargetHandlers> ​

Defined in: src/helpers/message.ts:151

Beta

Helper class to manage messages between workers/iframes and their parent

Examples ​

Use the MessageHelper to create a server that can be used to communicate between workers or iframes and their parent.

In the child worker.js:

typescript
const handlers = {
  async test() {
    return "test";
  },
};
// Create a new server
const server = new MessageHelper({
  name: "child",
  handlers,
  canBeDestroyed: true,
});
// Start the listener
server.start();
// Export the handlers for type hinting
export { handlers };

In the parent:

typescript
// Import the handlers
import type { handlers } from "./worker.js";
// Create a new worker
const worker = new Worker("worker.js");
// Create a new server with the type from the target handlers
const server = new MessageHelper<typeof handlers>({
  name: "worker",
  handlers: {
    async test() {
      return "test";
    },
  },
  target: worker,
});
server.start();
// Execute the handlers defined in the worker as if they were local
ztoolkit.log(await server.proxy.test());
// ...
// Stop the server, can be restarted with server.start()
server.stop();
// Destroy the server and the worker
server.destroy();

Evaluate code in the other side of the server

typescript
await server.eval("self.firstName = 'John';");

Get a property from the other side of the server, can be nested.

Only works if the property is a primitive or a serializable object

typescript
ztoolkit.log(await server.get("self.firstName"));

Set a property from the other side of the server, can be nested.

Only works if the property is a primitive or a serializable object

typescript
await server.set("self.firstName", "Alice");

Check if the target is alive

typescript
ztoolkit.log(await server.isTargetAlive());
// Alternatively, send a ping message
ztoolkit.log(await server.proxy._ping());

Type Parameters ​

_TargetHandlers ​

_TargetHandlers extends MessageHandlers

Constructors ​

Constructor ​

ts
new MessageHelper<_TargetHandlers>(config): MessageHelper<_TargetHandlers>;

Defined in: src/helpers/message.ts:184

Beta

Parameters ​

config ​

MessageServerConfig

Returns ​

MessageHelper<_TargetHandlers>

Properties ​

config ​

ts
protected config: Required<MessageServerConfig>;

Defined in: src/helpers/message.ts:152

Beta


env ​

ts
protected env: "browser" | "content" | "webworker" | "chromeworker";

Defined in: src/helpers/message.ts:154

Beta


listener? ​

ts
protected optional listener: any;

Defined in: src/helpers/message.ts:156

Beta


proxy ​

ts
proxy: PromisedMessageHandlers<_TargetHandlers & BuiltInMessageHandlers>;

Defined in: src/helpers/message.ts:163

Beta

Proxy object to call the message handlers


running ​

ts
running: boolean = false;

Defined in: src/helpers/message.ts:158

Beta

Accessors ​

privileged ​

Get Signature ​

ts
get privileged(): boolean;

Defined in: src/helpers/message.ts:180

Beta

Returns ​

boolean


target ​

Get Signature ​

ts
get target(): Window | Worker;

Defined in: src/helpers/message.ts:176

Beta

Returns ​

Window | Worker

Methods ​

call() ​

ts
call(func, args): Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_call"]>;

Defined in: src/helpers/message.ts:403

Beta

Parameters ​

func ​

string

args ​

any[]

Returns ​

Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_call"]>


destroy() ​

ts
destroy(): void;

Defined in: src/helpers/message.ts:339

Beta

Returns ​

void


eval() ​

ts
eval(code): Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_eval"]>;

Defined in: src/helpers/message.ts:418

Beta

Parameters ​

code ​

string

Returns ​

Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_eval"]>


exec() ​

ts
exec<_HandlersName, _HandlersType>(
   name,
   params?,
options?): Promise<Awaited<MessageReturnType<_HandlersType>[_HandlersName]>>;

Defined in: src/helpers/message.ts:354

Beta

Type Parameters ​

_HandlersName ​

_HandlersName extends string | number | symbol

_HandlersType ​

_HandlersType extends MessageHandlers & BuiltInMessageHandlers

Parameters ​

name ​

_HandlersName

params? ​

MessageParams<_HandlersType>[_HandlersName]

options? ​
timeout? ​

number

Returns ​

Promise<Awaited<MessageReturnType<_HandlersType>[_HandlersName]>>


get() ​

ts
get(key): Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_get"]>;

Defined in: src/helpers/message.ts:408

Beta

Parameters ​

key ​

string

Returns ​

Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_get"]>


isTargetAlive() ​

ts
isTargetAlive(): Promise<boolean>;

Defined in: src/helpers/message.ts:459

Beta

Returns ​

Promise<boolean>


send() ​

ts
send(options): Promise<string>;

Defined in: src/helpers/message.ts:423

Beta

Parameters ​

options ​
data ​

any

jobID? ​

string

name ​

string

requestReturn? ​

boolean

success? ​

boolean

Returns ​

Promise<string>


set() ​

ts
set(key, value): Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_set"]>;

Defined in: src/helpers/message.ts:413

Beta

Parameters ​

key ​

string

value ​

any

Returns ​

Promise<MessageReturnType<_TargetHandlers & BuiltInMessageHandlers>["_set"]>


start() ​

ts
start(): void;

Defined in: src/helpers/message.ts:254

Beta

Returns ​

void


stop() ​

ts
stop(): void;

Defined in: src/helpers/message.ts:331

Beta

Returns ​

void