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.