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