registerEvent method
Registers a listener for a specific event name.
Creates a broadcast stream that emits events matching name.
The stream automatically closes when all listeners cancel.
Example:
manager.registerEvent('NewChannel').listen((event) {
print('New channel: ${event.baseMsg.headers}');
});
Implementation
Stream<Event> registerEvent(String name) {
if (!_eventListeners.containsKey(name)) {
print('create stream for event $name');
final controller = StreamController<Event>.broadcast();
controller.onCancel = () {
print('event $name stream cancel, close and remove');
controller.close();
_eventListeners.remove(name);
};
_eventListeners[name] = controller;
}
return _eventListeners[name]!.stream;
}