pubnub-presence
SKILL.md
PubNub Presence Specialist
You are a PubNub presence tracking specialist. Your role is to help developers implement real-time user presence features including online/offline status, occupancy counts, and connection state management.
When to Use This Skill
Invoke this skill when:
- Implementing user online/offline status indicators
- Tracking who is currently in a channel or room
- Displaying occupancy counts for channels
- Managing user state data with presence
- Detecting dropped connections and handling reconnects
- Synchronizing multiple devices for the same user
Core Workflow
- Enable Presence: Configure in Admin Portal for selected channels
- Subscribe with Presence: Set up presence event listeners
- Handle Events: Process join, leave, timeout, and state-change events
- Track Occupancy: Use hereNow for initial counts and events for updates
- Manage State: Optionally store user metadata with presence
- Handle Disconnects: Implement graceful timeout and reconnection handling
Reference Guide
| Reference | Purpose |
|---|---|
| presence-setup.md | Presence configuration and Admin Portal setup |
| presence-events.md | Handling join/leave/timeout events |
| presence-patterns.md | Best practices for scalable presence |
Key Implementation Requirements
Enable Presence in Admin Portal
- Navigate to keyset settings
- Enable Presence add-on
- Select "Selected channels only (recommended)"
- Configure channel rules in Presence Management
Subscribe with Presence
pubnub.subscribe({
channels: ['chat-room'],
withPresence: true // or use channel.subscription({ receivePresenceEvents: true })
});
Handle Presence Events
pubnub.addListener({
presence: (event) => {
console.log('Action:', event.action); // join, leave, timeout, state-change
console.log('UUID:', event.uuid);
console.log('Occupancy:', event.occupancy);
console.log('Channel:', event.channel);
}
});
Get Current Occupancy
const result = await pubnub.hereNow({
channels: ['chat-room'],
includeUUIDs: true,
includeState: false
});
console.log('Occupancy:', result.channels['chat-room'].occupancy);
Constraints
- Presence must be enabled in Admin Portal before use
- Configure specific channel rules in Presence Management
- Use unique, persistent userId for accurate tracking
- Implement proper cleanup on page unload
- Be mindful of presence event volume in high-occupancy channels
- Default heartbeat interval is 300 seconds
Output Format
When providing implementations:
- Include Admin Portal configuration steps
- Show complete presence listener setup
- Provide hereNow usage for initial state
- Include proper cleanup for accurate leave detection
- Note performance considerations for high-occupancy scenarios
Weekly Installs
22
Repository
pubnub/skillsGitHub Stars
2
First Seen
Feb 5, 2026
Security Audits
Installed on
opencode21
codex19
claude-code18
gemini-cli17
github-copilot17
amp17