Presence
Track who's online with arbitrary metadata. Perfect for "user is typing", cursor sharing, and online status indicators.
Server
const server = new PPServer({
port: 3000,
presence: { syncInterval: 1000 }, // Broadcast every 1s
});
server.on("connection", (client) => {
// Track with arbitrary metadata
server.presence.track(client, {
name: "Alex",
status: "online",
cursor: { x: 0, y: 0 },
});
// Update metadata
client.on("message", (msg) => {
if (msg.type === "cursor") {
server.presence.update(client.id, {
cursor: msg.payload,
});
}
});
});
// Listen for changes
server.presence.onChange((presences) => {
console.log(`${presences.length} users online`);
});
// Auto-untracked on disconnectClient
// Presence list auto-synced
client.on("presence", ({ presences }) => {
for (const p of presences) {
console.log(p.data.name, "is", p.data.status);
renderCursor(p.data.cursor);
}
});Back to: @painda/core