diff --git a/README.md b/README.md index 638029d..6761f60 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,14 @@ That's all you need to do. When storage is enabled, events are written to the da To enable storage selectively by channel, implement a channel manager and override `is_channel_reliable`. +## Listener manager + +To customize listener management (add, remove, kick, queue event), set a listener manager class in `settings.py`: + +```py +EVENTSTREAM_LISTENERMANAGER_CLASS = 'django_eventstream.views.ListenerManager' +``` + ## Receiving in the browser Include client libraries on the frontend: diff --git a/django_eventstream/views.py b/django_eventstream/views.py index 4a4263e..83363c2 100644 --- a/django_eventstream/views.py +++ b/django_eventstream/views.py @@ -140,11 +140,12 @@ def kick(self, user_id, channel): listener.wake_threadsafe() -listener_manager = ListenerManager() - - def get_listener_manager(): - return listener_manager + from .utils import get_class_from_setting + return get_class_from_setting( + "EVENTSTREAM_LISTENERMANAGER_CLASS", + "django_eventstream.views.ListenerManager", + ) async def stream(event_request, listener):