I am trying to send data to Django Channels (chat application 
<https://channels.readthedocs.io/en/latest/tutorial/part_3.html>) from Python 
web socket client <https://pypi.python.org/pypi/websocket-client> . I am 
able to do the handshake but my data (string) is not being populated in the 
chat web page.

*My consumers of django channels*

*consumers.py*

class EchoConsumer(WebsocketConsumer):

    def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['room_name']
        self.room_group_name = 'power_%s' % self.room_name

        # Join room group
        async_to_sync(self.channel_layer.group_add)(
            self.room_group_name,
            self.channel_name
        )

        self.accept()

    def disconnect(self, close_code):
        # Leave room group
        async_to_sync(self.channel_layer.group_discard)(
            self.room_group_name,
            self.channel_name
        )

        # Receive message from WebSocket

    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        message = text_data_json['message']

        # Send message to room group
        async_to_sync(self.channel_layer.group_send)(
            self.room_group_name,
            {
                'type': 'chat_message',
                'message': message
            }
        )

        # Receive message from room group

    def chat_message(self, event):
        message = event['message']

        # Send message to WebSocket
        self.send(text_data=json.dumps({
            'message': message
        }))

*My Python web socket client*

*my-websocket.py*

def on_message(ws, message):
    print (message)
def on_error(ws, error):
    print ("eroror:", error)
def on_close(ws):
    print ("### closed ###")
    # Attemp to reconnect with 2 seconds interval
    time.sleep(2)
    initiate()
def on_open(ws):
    print ("### Initiating new websocket connectipython my-websocket.pyon ###")
    def run(*args):
        for i in range(30000):
            # Sending message with 1 second intervall
            time.sleep(1)

            ws.send("Hello %d" % i)
        time.sleep(1)
        ws.close()
        print ("thread terminating...")
    _thread.start_new_thread(run, ())
def initiate():
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://localhost:8000/ws/power/room/",
        on_message = on_message,
        on_error = on_error,
        on_close = on_close)
    ws.on_open = on_open

    ws.run_forever()
if __name__ == "__main__":
    initiate()

*The error i am receiving at ASGI server is* 

WebSocket CONNECT /ws/power/room/ [127.0.0.1:50918]Exception inside 
application: Expecting value: line 1 column 1 (char 0)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\sessions.py",
 line 179, in __call__
    return await self.inner(receive, self.send)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\middleware.py",
 line 41, in coroutine_call
    await inner_instance(receive, send)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\consumer.py",
 line 59, in __call__
    [receive, self.channel_receive], self.dispatch
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\utils.py",
 line 52, in await_many_dispatch
    await dispatch(result)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\asgiref\sync.py",
 line 108, in __call__
    return await asyncio.wait_for(future, timeout=None)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\asyncio\tasks.py",
 line 388, in wait_for
    return await fut
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\concurrent\futures\thread.py",
 line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\db.py",
 line 13, in thread_handler
    return super().thread_handler(loop, *args, **kwargs)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\asgiref\sync.py",
 line 123, in thread_handler
    return self.func(*args, **kwargs)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\consumer.py",
 line 105, in dispatch
    handler(message)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\generic\websocket.py",
 line 60, in websocket_receive
    self.receive(text_data=message["text"])
  File "C:\Users\Admin\PycharmProjects\power\myChannels\consumers.py", line 41, 
in receive
    text_data_json = json.loads(text_data)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\json\__init__.py",
 line 348, in loads
    return _default_decoder.decode(s)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", 
line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", 
line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
  Expecting value: line 1 column 1 (char 0)WebSocket DISCONNECT /ws/power/room/ 
[127.0.0.1:50918] 

where as the error which i am receiving at client end is 

WebSocket HANDSHAKING /ws/power/room/ [127.0.0.1:50918]WebSocket CONNECT 
/ws/power/room/ [127.0.0.1:50918]Exception inside application: Expecting value: 
line 1 column 1 (char 0)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\sessions.py",
 line 179, in __call__
    return await self.inner(receive, self.send)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\middleware.py",
 line 41, in coroutine_call
    await inner_instance(receive, send)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\consumer.py",
 line 59, in __call__
    [receive, self.channel_receive], self.dispatch
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\utils.py",
 line 52, in await_many_dispatch
    await dispatch(result)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\asgiref\sync.py",
 line 108, in __call__
    return await asyncio.wait_for(future, timeout=None)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\asyncio\tasks.py",
 line 388, in wait_for
    return await fut
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\concurrent\futures\thread.py",
 line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\db.py",
 line 13, in thread_handler
    return super().thread_handler(loop, *args, **kwargs)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\asgiref\sync.py",
 line 123, in thread_handler
    return self.func(*args, **kwargs)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\consumer.py",
 line 105, in dispatch
    handler(message)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\channels\generic\websocket.py",
 line 60, in websocket_receive
    self.receive(text_data=message["text"])
  File "C:\Users\Admin\PycharmProjects\power\myChannels\consumers.py", line 41, 
in receive
    text_data_json = json.loads(text_data)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\json\__init__.py",
 line 348, in loads
    return _default_decoder.decode(s)
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", 
line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File 
"C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", 
line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
  Expecting value: line 1 column 1 (char 0)WebSocket DISCONNECT /ws/power/room/ 
[127.0.0.1:50918]


-- 
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/f1e3606c-d962-4b39-b1fc-7c769d035773%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to