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 [email protected].
To post to this group, send email to [email protected].
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