implement websocket connections
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# api/consumers.py
|
||||
import json
|
||||
from channels.generic.websocket import WebsocketConsumer
|
||||
|
||||
class MediaConsumer(WebsocketConsumer):
|
||||
def connect(self):
|
||||
self.accept()
|
||||
self.send(text_data=json.dumps({
|
||||
"message": "Connected to WebSocket server!"
|
||||
}))
|
||||
|
||||
def receive(self, text_data):
|
||||
data = json.loads(text_data)
|
||||
message = data.get("message", "")
|
||||
|
||||
if message == "ping":
|
||||
self.send(text_data=json.dumps({"response": "pong"}))
|
||||
else:
|
||||
self.send(text_data=json.dumps({"response": f"Received: {message}"}))
|
||||
|
||||
def disconnect(self, close_code):
|
||||
print("Disconnected from Websocket")
|
||||
@@ -0,0 +1,7 @@
|
||||
# api/routing.py
|
||||
from django.urls import path
|
||||
from . import consumers
|
||||
|
||||
websocket_urlpatterns= [
|
||||
path("ws/media/", consumers.MediaConsumer.as_asgi()),
|
||||
]
|
||||
+11
-2
@@ -8,9 +8,18 @@ https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.asgi import get_asgi_application
|
||||
from channels.routing import ProtocolTypeRouter, URLRouter
|
||||
from channels.auth import AuthMiddlewareStack
|
||||
import api.routing
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
|
||||
|
||||
application = get_asgi_application()
|
||||
application = ProtocolTypeRouter({
|
||||
"http": get_asgi_application(),
|
||||
"websocket": AuthMiddlewareStack(
|
||||
URLRouter(
|
||||
api.routing.websocket_urlpatterns
|
||||
)
|
||||
)
|
||||
})
|
||||
|
||||
@@ -31,6 +31,8 @@ ALLOWED_HOSTS = ['*']
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'daphne',
|
||||
'channels',
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
@@ -72,7 +74,14 @@ TEMPLATES = [
|
||||
]
|
||||
|
||||
WSGI_APPLICATION = 'backend.wsgi.application'
|
||||
ASGI_APPLICATION = "backend.asgi.application"
|
||||
|
||||
# Redis setup for WebSocket communication
|
||||
CHANNEL_LAYERS = {
|
||||
"default": {
|
||||
"BACKEND": "channels.layers.InMemoryChannelLayer"
|
||||
}
|
||||
}
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases
|
||||
|
||||
Reference in New Issue
Block a user