When websocket in django, url not found occurs

66 views Asked by At

I'm going to proceed with WebSocket in django. However, url not found occurs, but I can't find the cause.

  • CMS/CMS/settings.py

    ...
    INSTALLED_APPS = [
        'channels',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'CMS',
        'main',
    ]
    
    ASGI_APPLICATION = 'CMS.asgi.application'
    
    
    CHANNEL_LAYERS = {
        "default": {
            "BACKEND": "channels.layers.InMemoryChannelLayer"
        }
    }

  • CMS/CMS/routing.py

    from django.core.asgi import get_asgi_application
    from django.urls import path,re_path
    
    from . import consumers
    
    
    websocket_urlpatterns = [
        path('ws/alarm_endpoint/', consumers.JpConsumer.as_asgi()),
    ]

  • CMS/CMS/consumers.py

    from channels.generic.websocket import AsyncWebsocketConsumer
    import json
    from channels.layers import get_channel_layer
    
    
    class JpConsumer(AsyncWebsocketConsumer):
    
        async def connect(self):
            await self.accept()
    
        async def disconnect(self, close_code):
            await self.close()
    
        async def receive(self, text_data):
            text_data_json = json.loads(text_data)
            message = text_data_json['message']
    
            await self.send(text_data=json.dumps({
                'message': message
            }))

  • main/static/common/notification.js


    var socket = new WebSocket("ws://" + window.location.host + "/ws/alarm_endpoint/");
    
    socket.onopen = function () {
        console.log('WebSocket connection opened.');
        
        // 연결이 열리면 서버로 데이터를 보낼 수 있습니다.
        socket.send(JSON.stringify({
            'message': 'Hello, Server!'
        }));
    };
    
    socket.onmessage = function (e) {
        var data = JSON.parse(e.data);
        console.log('Received message from server:', data.message);
        
        // 서버로부터 받은 데이터를 처리할 수 있습니다.
        alert('Received message from server: ' + data.message);
    };
    
    socket.onclose = function (event) {
        if (event.wasClean) {
            console.log('Connection closed cleanly, code=' + event.code + ', reason=' + event.reason);
        } else {
            console.error('Connection died');
        }
    };
    
    socket.onerror = function (error) {
        console.error('WebSocket Error: ' + error);
    };
    
    // 페이지를 닫거나 이동할 때 WebSocket 연결을 닫습니다.
    window.onbeforeunload = function () {
        socket.close();
    };

html


    ...
    
    {% "static 'common/notification.js' %}">
    
    ...

When you call notification.js in html, WebSocket connection to 'ws://127.0.1:8000/ws/alarm_endpoint/'failed: error occurs in the browser developer tool.

I have no idea.

And, when I'm running, I'm running in development mode Running with "python manage.py runserver".

0

There are 0 answers