Quantcast
Viewing all articles
Browse latest Browse all 87

why webSocket connection failed?

I've been trying to cerate a chat app using Django with webSocket,in console I got this,errorWebSocket connection to 'ws://127.0.0.1:8000/ws/chat/room/' failed:room/:20I'm not using Redis for implementing Django channels, İt is just a simple chat app runs on local server host

views.py

def room(request, room_name):    return render(request, "chatroom.html", {"room_name": room_name})

routing.py

websocket_urlpatterns = [    re_path(r"ws/chat/(?P<room_name>\w+)/$", consumers.ChatRoomConsumer.as_asgi()),]

consumer.py

class ChatRoomConsumer(AsyncWebsocketConsumer):    async def connect(self):        self.room_name = self.scope["url_route"]["kwarges"]["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()        # to know which group we should send to        await self.channel_layer.group_send(            self.room_group_name,            {"type": "tester_message","tester": "hello world",            },        )    async def tester_message(self, event):        tester = event["tester"]        await self.send(text_data=json.dumps({"tester": tester}))    async def disconnect(self, close_code):        await self.channel_layer.group_discard(self.room_group_name, self.channel_name)

chatroom.html

<div id="user-hello"></div><!-- convert an object into a JSON object -->    {{room_name|json_script:"room-name"}}<script>          // convert a JSON object in text format to js object that can be used        const roomName=JSON.parse(document.getElementById('room-name').textContent);      //create websocket connection script        const chatSocket=new WebSocket('ws://'+            window.location.host +'/ws/chat/'+            roomName +'/'        );        //receive a massege          chatSocket.onmessage=function(e){            const data=JSON.parse(e.data)            console.log(data);            document.querySelector('#user-hello').innerHTML=(data.tester)        }</script>

settings.py

INSTALLED_APPS = ["channels","django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.contrib.sessions","django.contrib.messages","django.contrib.staticfiles","chat",]DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"ASGI_APPLICATION = "core.routing.application"CHANNEL_LAYERS = {"default": {"BACKEND": "channels.layers.InMemoryChannelLayer",    }}

Viewing all articles
Browse latest Browse all 87

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>