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 (orundefined
if 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();