joinPresence method
Joins presence in channelName publishing userInfo metadata.
Returns a broadcast Stream emitting the list of active users in the channel.
Automatically subscribes to channelName and re-registers presence across reconnects.
Implementation
@override
Stream<List<Map<String, dynamic>>> joinPresence(
String channelName,
Map<String, dynamic> userInfo,
) {
_desiredPresenceJoins[channelName] = userInfo;
final isNew = _desiredSubscriptions.add(channelName);
final stream = _presenceStreams.putIfAbsent(channelName, () {
final controller =
StreamController<List<Map<String, dynamic>>>.broadcast();
_presenceControllers[channelName] = controller;
return controller.stream;
});
if (isConnected) {
if (isNew) {
send(RealtimeMessage.subscribe(channelName));
}
send(RealtimeMessage.presenceJoin(channelName, userInfo));
}
return stream;
}