addListener method

void addListener(
  1. Session session,
  2. String channelName,
  3. MessageCentralListenerCallback listener
)

Adds a listener to a named channel. Whenever a message is posted using postMessage, the listener will be notified.

Implementation

void addListener(
  Session session,
  String channelName,
  MessageCentralListenerCallback listener,
) {
  // Find or create channel
  var channel = _getChannel(channelName);
  channel.add(listener);

  var subscribedChannels = _sessionToChannelNamesLookup[session];
  if (subscribedChannels == null) {
    subscribedChannels = {};
    _sessionToChannelNamesLookup[session] = subscribedChannels;
  }
  subscribedChannels.add(channelName);

  var callbacks = _sessionToCallbacksLookup[session];
  if (callbacks == null) {
    callbacks = {};
    _sessionToCallbacksLookup[session] = callbacks;
  }
  callbacks.add(listener);

  if (session.serverpod.redisController != null) {
    session.serverpod.redisController!.subscribe(
      channelName,
      _receivedRedisMessage,
    );
  }
}