That's what I did after reading the documentation here's how my channels 
files look like

# settings.py
# ...
ASGI_APPLICATION = 'djangoChannels.routing.application'
# ...

# routing.py
from django.conf.urls import url

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

from .consumers import ChatConsumer

application = ProtocolTypeRouter({
   # Empty for now (http->django views is added by default)
   'websocket': AuthMiddlewareStack(
       URLRouter([
           url('^sessions/$', ChatConsumer)
       ])
   )
})

# consumers.py
from asgiref.sync import AsyncToSync
from channels.generic.websocket import WebsocketConsumer

class ChatConsumer(WebsocketConsumer):

    def connect(self):
       AsyncToSync(self.channel_layer.group_add)("chat", self.channel_name)

    def disconnect(self):
       AsyncToSync(self.channel_layer.group_discard)("chat", self
.channel_name)


After connecting with JS websocket to 

ws://127.0.0.1:8000/sessions/
>

Raises an exception

Performing system checks...
>
> System check identified no issues (0 silenced).
> February 03, 2018 - 03:14:29
> Django version 2.0.2, using settings 'djangoChannels.settings'
> Starting ASGI/Channels development server at http://127.0.0.1:8000/
> Quit the server with CTRL-BREAK.
> 2018-02-03 03:14:29,799 - INFO - server - HTTP/2 support not enabled 
> (install the http2 and tls Twisted extras)
> 2018-02-03 03:14:29,800 - INFO - server - Listening on endpoint 
> tcp:port=8000:interface=127.0.0.1
> [2018/02/03 03:14:32] WebSocket HANDSHAKING /sessions/ [127.0.0.1:8631]
> ERROR:root:Exception inside application: 'NoneType' object has no 
> attribute 'group_add'
>   File "c:\python35\Lib\asyncio\tasks.py", line 241, in _step
>     result = coro.throw(exc)
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\consumer.py",
>  
> line 53, in __call__
>     await await_many_dispatch([receive], self.dispatch)
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\utils.py", 
> line 48, in await_many_dispatch
>     await dispatch(result)
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py", 
> line 84, in inner
>     return await async_func(*args, **kwargs)
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py", 
> line 67, in __call__
>     return await asyncio.wait_for(future, timeout=None)
>   File "c:\python35\Lib\asyncio\tasks.py", line 367, in wait_for
>     return (yield from fut)
>   File "c:\python35\Lib\asyncio\futures.py", line 358, in __iter__
>     yield self  # This tells Task to wait for completion.
>   File "c:\python35\Lib\asyncio\tasks.py", line 290, in _wakeup
>     future.result()
>   File "c:\python35\Lib\asyncio\futures.py", line 274, in result
>     raise self._exception
>   File "c:\python35\Lib\concurrent\futures\thread.py", line 55, in run
>     result = self.fn(*self.args, **self.kwargs)
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py", 
> line 76, in thread_handler
>     raise e
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py", 
> line 74, in thread_handler
>     self.func(*args, **kwargs)
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\consumer.py",
>  
> line 93, in dispatch
>     handler(message)
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\generic\websocket.py",
>  
> line 19, in websocket_connect
>     self.connect()
>   File 
> "D:\Programming\DjangoWebsite\HUWebsite\husite\djangoChannels\djangoChannels\consumers.py",
>  
> line 8, in connect
>     AsyncToSync(self.channel_layer.group_add)("chat", self.channel_name)
>   'NoneType' object has no attribute 'group_add'
> [2018/02/03 03:14:32] WebSocket DISCONNECT /sessions/ [127.0.0.1:8631]
>


On Friday, February 2, 2018 at 7:37:36 PM UTC+2, Andrew Godwin wrote:
>
> Hi Ahmed,
>
> In the new release channel layers are optional - if you don't configure 
> them they will indeed come through as None. The settings format changed 
> slightly too - you can read more here: 
> http://channels.readthedocs.io/en/latest/topics/channel_layers.html
>
> Andrew
>
> On Fri, Feb 2, 2018 at 3:31 AM, Ahmed Magdy <ahmed...@gmail.com 
> <javascript:>> wrote:
>
>> I'm relatively new to channels and was using Channels v1.x.x groups 
>> easily, but after v2.0.0 update and reading the documentation
>>
>> # This example uses WebSocket consumer, which is synchronous, and so
>> # needs the async channel layer functions to be converted.
>> from asgiref.sync import AsyncToSync
>>
>> class ChatConsumer(WebsocketConsumer):
>>
>>     def connect(self):
>>         AsyncToSync(self.channel_layer.group_add)("chat", self.channel_name)
>>
>>     def disconnect(self):
>>         AsyncToSync(self.channel_layer.group_discard)("chat", 
>> self.channel_name)
>>
>> Enter code here...
>>
>> channel_layer, channel_name are always NoneType and exception occurs.
>>
>> Is that because I didn't configure channel layers? But in the old version 
>> I also used the in memory type and Groups were working well.
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to django-users...@googlegroups.com <javascript:>.
>> To post to this group, send email to django...@googlegroups.com 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/fff84d59-da69-47d5-a7c3-ee0221680642%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/fff84d59-da69-47d5-a7c3-ee0221680642%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
<https://lh3.googleusercontent.com/-fvPoTzCZOwo/WnUNLrDzVZI/AAAAAAAAC6Q/lNyrJjyOUtkudo5F--8pKqzlX23r25i4gCLcBGAs/s1600/Capture.JPG>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/8ca34830-d807-447c-836b-d2e52ee87b6d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to