consumers.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer
# from asgiref.sync import sync_to_async
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name ='chat_%s' % self.room_name
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name,
)
await self.accept()
async def disconnect(self):
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name,
)
routing.py
from django.urls import path
from room import consumers
websocket_urlpatterns=[
path('ws/<str:room_name>/',consumers.ChatConsumer.as_asgi()),
]
asgi.py
import os
from django.core.asgi import get_asgi_application
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import room.routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangochat.settings')
application = ProtocolTypeRouter({
"http":get_asgi_application(),
"websocket":AuthMiddlewareStack(
URLRouter(
room.routing.websocket_urlpatterns
)
)
})
error:
Exception inside application: ChatConsumer.disconnect() takes 1 positional argument but 2 were given
Traceback (most recent call last):
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\staticfiles.py", line 44, in __call__
return await self.application(scope, receive, send)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\routing.py", line 71, in __call__
return await application(scope, receive, send)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\sessions.py", line 47, in __call__
return await self.inner(dict(scope, cookies=cookies), receive, send)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\sessions.py", line 263, in __call__
return await self.inner(wrapper.scope, receive, wrapper.send)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\auth.py", line 185, in __call__
return await super().__call__(scope, receive, send)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\middleware.py", line 26, in __call__
return await self.inner(scope, receive, send)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\routing.py", line 150, in __call__
return await application(
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\consumer.py", line 94, in app
return await consumer(scope, receive, send)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\consumer.py", line 58, in __call__
await await_many_dispatch(
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\utils.py", line 51, in await_many_dispatch
await dispatch(result)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\consumer.py", line 73, in dispatch
await handler(message)
File "C:\Users\dines\Desktop\trying_again\venv\lib\site-packages\channels\generic\websocket.py", line 238, in websocket_disconnect
await self.disconnect(message["code"])
TypeError: ChatConsumer.disconnect() takes 1 positional argument but 2 were given
I am doing a chat application using the django channels I do not know much about this channels or chat in django, I followed one video in doing this, I done as everything correct as guided in the video, but I am struggling with this from very long time, I have searched and done as much as I can to solve that, but I didn't. If any know about this please help me...