Django и WebSocket в производстве

Я впервые работаю с обновлениями в реальном времени в моем проекте Django, и это хорошо работает локально, но в производстве (Microsoft Azure) у меня возникает ошибка.

Примечание: Я читал пару статей об использовании Redis вместо InMemoryChannelLayer.

Ошибка

WebSocket connection to 'wss://mydomain.com/ws/orders/' failed: 
(anonymous) @ orders/:288

Код

index.html

<script type="text/javascript">
    const orderId = '{{ order.id }}';
   let url = `wss://${window.location.host}/ws/orders/`;
   
   const orderSocket = new WebSocket(url)

   orderSocket.onmessage = function(e){
       let data = JSON.parse(e.data);

       document.querySelector('.backdrop').classList.remove('d-none');
       setTimeout(() => {
           location.reload();
       }, 3000);

   }
</script>

settings.py


ALLOWED_HOSTS = ['mydomain.com', '127.0.0.1', 'localhost'] # my domain refers to my website domain


CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels.layers.InMemoryChannelLayer",
    },
}


ASGI_APPLICATION = 'core.asgi.application'


INSTALLED_APPS = [
    'channels',
    # other apps...
]

routing.py

from django.urls import path
from . import consumers

websocket_urlpatterns = [
    path('ws/orders/', consumers.OrdersCustomers.as_asgi()),
]

То, что я пробовал:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "host": "redis://localhost:6379",
        },
    },
}

Но не знал, как настроить host.

Вернуться на верх