Sign In
Build with Actors

Events

Events are used for clients to receive realtime data from actors.


Publishing from actors

Actors can publish events to clients using this._broadcast and connection.send.

Broadcasting events

Actors can publish events to all connected clients with this._broadcast(name, data). For example:

export default class ChatRoom extends Actor {
  sendMessage(rpc: Rpc<ChatRoom>, message: string) {
    this._broadcast('newMessage', { message });
  }
}

Sending events to specific connections

Actors can send messages to specific client connections. All connections are available on the this._connections array. For example:

export default class ChatRoom extends Actor {
  sendPrivateMessage(rpc: Rpc<ChatRoom>, connectionId: number, message: string) {
    const conn = this._connections.find(c => c.id == connectionId);
    conn.send('newMessage', { message });
  }
}

Subscribing from clients

Clients can subscribe to events from actors using on and once.

on(eventName, callback)

Documentation

Clients can subscribe to events that will happen repeatedly using actor.on(name, callback). For example:

const actor = client.get<ChatRoom>({ name: 'chat_room' });
actor.on('newMessage', ({ message }) => {
  console.log('Message', message);
});

once(eventName, callback)

Documentation

Clients can listen for an event only one time with actor.once(name, callback). For example:

const actor = client.get<ChatRoom>({ name: 'chat_room' });
actor.once('joinRequestApproved', () => {
  // This will only be called once
  console.log('Join request accepted');
});
await actor.requestJoin();

Connections

Connections are used to communicate with clients from the actor.

Read more about connections here.

Suggest changes to this page