Add event listeners to a subscription
masterTo receive real-time data, you must first create a channel and a subscription, then attach listeners. You can use two different patterns for listening to events:
1. Event-specific property assignment
You can assign callback functions directly to specific event properties on the subscription object (e.g., onMessage, onPresence, onSignal, onObjects, onMessageAction, onFile).
2. Generic listener via addListener
Use the addListener method to provide a single object containing multiple callback functions for different event types. This is useful for managing all event types in one place.
Supported event types in addListener include:
message: Triggered when a message is received.presence: Triggered on presence changes (requires a subscription with presence enabled).signal: Triggered when a signal is received.objects: Triggered by App Context events.messageAction: Triggered by Message Reactions.file: Triggered by File Sharing events.
// create a subscription from a channel entity
const channel = pubnub.channel('my_channel');
const subscription = channel.subscription();
subscription.subscribe();
// Example: Event-specific listeners
subscription.onMessage = (messageEvent) => { console.log("Message event: ", messageEvent); };
// Example: Generic listeners
subscription.addListener({
message: function (m) {
const channelName = m.channel;
const msg = m.message;
// ...
},
presence: function (p) {
const action = p.action; // join, leave, state-change, or timeout
const occupancy = p.occupancy;
// ...
}
});