implement websocket connections

This commit is contained in:
Joel Mathew Thomas
2025-03-19 23:44:55 +05:30
parent c96b74c463
commit e1e7464bb7
8 changed files with 289 additions and 146 deletions
+22
View File
@@ -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")
+7
View File
@@ -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
View File
@@ -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
)
)
})
+9
View File
@@ -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