Event
The WorkAdventure event system allows to exchange messages between players of a same map, in real-time.
See the events documentation for an introduction to the "events" concept.
Broadcasting an event to all players of the map
To broadcast an event to all players of the map, use the WA.event.broadcast method:
WA.event.broadcast(key: string, data: unknown): Promise<void>
key(type:string): the name of the eventdata(type:unknown): the payload of the event. Can be any JSON-serializable value (including objects, arrays, strings, numbers, booleans, undefined, etc.).
The dispatchEvent method returns a promise that will be resolved when the event has successfully reached the server.
Example usage:
WA.event.broadcast("my-event", "my payload");
Listening to events
Events can be listened to using WA.event.on.
import type { Observable } from "rxjs";
type ScriptingEvent = {
name: string;
data: unknown;
senderId: number | undefined;
}
WA.event.on(name: string): Observable<ScriptingEvent>
on returns an RxJS Observable. You can use the subscribe method
to listen to events. The subscribe method takes a callback function that will be called each time an event is received.
The callback function takes a single argument: the event object of type ScriptingEvent.
The ScriptingEvent contains the following fields:
data(type:unknown): the payload of the eventname(type:string): the name of the eventsenderId(type:number): the ID of the player that sent the event (orundefinedif the event was sent by the system)
The subscribe method returns a Subscription object. You can use the unsubscribe method of this object to stop listening to events.
const subscription = WA.event.on("my-event").subscribe((event) => {
console.log("Event received", event.data);
});
// ...
subscription.unsubscribe();