From 0be49eda30f249d7c38e2a74783f9c3a00cb8f3e Mon Sep 17 00:00:00 2001 From: clavay Date: Wed, 22 Jan 2025 14:39:51 +0000 Subject: [PATCH] customize listener manager --- README.md | 8 ++++++++ django_eventstream/views.py | 9 +++++---- 2 files changed, 13 insertions(+), 4 deletions(-) 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):