subscribe

fun subscribe(topic: String, listener: PubSubMessageListener)

Subscribes to a topic; the listener receives every message published on it.

Persisted (old) messages of the topic are replayed right after subscribing, in server-paced batches, via onOldMessagesReceived — whose default forwards each batch to onOldMessagesReceived. The final batch carries isLast() == true; a topic with no history fires no history callback at all.

Requires a joined meeting. Called before the meeting reaches CONNECTED, it throws and onError fires with code 3001 (ERROR_ACTION_PERFORMED_BEFORE_MEETING_JOINED). While the meeting is RECONNECTING it throws without an error event — the app already knows the state from onMeetingStateChanged.

If the server rejects the subscription, the listener is unregistered again and onError fires with code 4088 (PUBSUB_SUBSCRIBE_FAILED) carrying the server's reason. Subscribing while the pubsub connection is temporarily down also fires code 4088 and throws; the listener is not registered.

Code Example:


try {
    meeting.pubSub.subscribe("CHAT", pubSubMessageListener);
} catch (Exception e) {
    Log.d("VideoSDK", "subscribe failed: " + e.getMessage());
}

Parameters

topic

the topic name to subscribe to

listener

the PubSubMessageListener to receive messages on this topic

Throws

if this listener instance is already subscribed to this topic; register a second listener instead, or unsubscribe first

if the meeting is not joined or is reconnecting, or the pubsub connection is temporarily down; the subscription is not registered — retry once the meeting is CONNECTED


Subscribes to a topic, bounding how much history is replayed and how live messages are paced.

History is delivered exactly as it is without options — in server-paced batches via onOldMessagesReceived, the final batch carrying isLast == true, and no callback at all on a topic with no history. What the options change is how much history is replayed (setOldMessageLimit).

Overflow of live messages under load is controlled by PubSubSubscribeOptions.RealtimeOverflow, with drops reported via onMessageDrop.

Requires a joined meeting. Called before the meeting reaches CONNECTED, it throws and onError fires with code 3001 (ERROR_ACTION_PERFORMED_BEFORE_MEETING_JOINED). While the meeting is RECONNECTING it throws without an error event — the app already knows the state from onMeetingStateChanged.

If the server rejects the subscription, the listener is unregistered again and onError fires with code 4088 (PUBSUB_SUBSCRIBE_FAILED) carrying the server's reason. Subscribing while the pubsub connection is temporarily down also fires code 4088 and throws; the listener is not registered.

Code Example:


try {
    PubSubSubscribeOptions options = new PubSubSubscribeOptions();
    options.setOldMessageLimit(100);
    meeting.pubSub.subscribe("CHAT", listener, options);
} catch (Exception e) {
    Log.d("VideoSDK", "subscribe failed: " + e.getMessage());
}

Parameters

topic

the topic name to subscribe to

listener

the PubSubMessageListener to receive messages on this topic

options

the PubSubSubscribeOptions controlling history, pacing and overflow; null behaves exactly like subscribe

Throws

if the options are invalid (e.g. negative oldMessageLimit, or maxQueue combined with RealtimeOverflow.DROP), or if this listener instance is already subscribed to this topic

if the meeting is not joined or is reconnecting, or the pubsub connection is temporarily down; the subscription is not registered — retry once the meeting is CONNECTED