Skip to content

marcosgabarda/django-websocket-notifications

Repository files navigation

Django Websocket Notifications

A Django application to deliver user notifications made with django-snitch using WebSockets.

PyPI https://codecov.io/gh/marcosgabarda/django-websocket-notifications/branch/main/graph/badge.svg?token=EY6DV8O6ZT Documentation Status

Quick start

This applications works using django-channels, so, you need to integrate this with your project before to integrate django-websocket-notifications. So, to make the quick start as quick and simple as possible, we've made the following assumptions:

  • You already have integrated django-channels
  • You are using a channel layer, like Redis
  • You have a routing.py file
  • Your project uses DRF to deliver a RESTful API

1 Install using pip:

pip install django-websocket-notifications

2 Add "websocket_notifications" to your INSTALLED_APPS settings like this:

INSTALLED_APPS += ('websocket_notifications',)

3 Add the routing patterns to your routing.py file:

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from websocket_notifications.routing import websocket_urlpatterns


application = ProtocolTypeRouter(
    {"websocket": AuthMiddlewareStack(URLRouter(websocket_urlpatterns)),}
)

4 (Optional) In order to test the integration, you can add the following view to your urls.py file to be able to access to a testing view:

urlpatterns += [
    path(
        "websocket-notifications/",
        include(
            "websocket_notifications.urls",
            namespace="websocket_notifications",
        ),
    ),
]

Now, you can access to /websocket-notifications/listener/ to check the integration.

5 Add the ViewSet to the DRF router:

from websocket_notifications.api.rest_framework import NotificationGroupViewSet


router = routers.DefaultRouter()
router.register("websocket-notifications/groups", viewset=NotificationGroupViewSet)

6 Integrate with django-snitch:

from websocket_notifications.snitch.backends import WebSocketNotificationBackend


@snitch.register(EVENT)
class MyEventHandler(snitch.EventHandler):
    ephemeral = True
    notification_backends = [WebSocketNotificationBackend]

About

A Django application to deliver user notifications made with django-snitch using WebSockets.

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published