User Awareness & State

Presence Channels & Rosters

Realtime user presence, active user rosters, and join/leave membership events.

Presence Events & Client Binding

Presence channels emit system events for initial roster synchronization and user state transitions:

const channel = client.subscribe("presence-meeting-room");

// Successfully joined and received current member roster
channel.bind("pusher:subscription_succeeded", (members) => {
  console.log("Total members in room:", members.count);
  members.each((member) => {
    console.log("User in room:", member.id, member.info);
  });
});

// Another user joined
channel.bind("pusher:member_added", (member) => {
  console.log("User joined:", member.id, member.info);
});

// A user left or disconnected
channel.bind("pusher:member_removed", (member) => {
  console.log("User left:", member.id);
});