unsubscribe method

Future<bool> unsubscribe(
  1. String channel
)

Unsubscribes from a Redis channel.

The returned future does not complete until Redis has confirmed that the subscription is gone.

Implementation

Future<bool> unsubscribe(
  String channel,
) async {
  var pending = _PendingConfirmation(_pendingUnsubscribes, channel);

  try {
    if (!await _connectPubSub()) return pending.complete(false);

    _subscriptions.remove(channel);
    _pubSub!.unsubscribe([channel]);

    return await pending.confirmed.timeout(
      _subscriptionConfirmationTimeout,
      onTimeout: () {
        _invalidatePubSub();
        return pending.complete(false);
      },
    );
  } catch (e) {
    _invalidatePubSub();
    return pending.complete(false);
  }
}