Appearance
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