DJANGO websocket 404 not Found с wss
Я пытаюсь подключить свой веб-сокет с помощью wss по протоколу https. Но в логах получаю 404 сообщение о том, что он не найден. Но в разработке все работает нормально по протоколу http://localhost. в settings.py
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [
("redis-container", 6379)
],
},
},
}
Я использую Redis для хоста
и мой asgi.py
import os
from django import setup
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import AllowedHostsOriginValidator
from NotificationApp.routing import websocket_urlpatterns
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.settings")
setup()
application = ProtocolTypeRouter(
{
"http": get_asgi_application(),
"websocket": AllowedHostsOriginValidator(
URLRouter(
websocket_urlpatterns,
)
),
}
)
and my ***routes.py*** file
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r"ws/notify/", consumers.NotificationConsumer.as_asgi()),
]
на фронтенде
const createWebSocket = () => {
const socket = new WebSocket(
`wss://localhost:8000/ws/notify/`
);
socket.onopen = function (e) {
console.log("Socket successfully connected.");
};
socket.onclose = function (e) {
console.log(e);
console.log("Socket closed unexpectedly");
// Try to reconnect every 5 seconds
// setTimeout(createWebSocket, 5000);
};
socket.onmessage = function (e) {
const data = JSON.parse(e.data);
document.getElementById("bellIcon").className = "shakeIt";
const wait = async () => {
await sleep(2000);
document.getElementById("bellIcon").className = "";
};
wait();
setNotifications((prevNotifications) => [data, ...prevNotifications]);
setUnreadNotifications((prevCount) => prevCount + 1);
};
return socket;
};
const socket = createWebSocket();
как я уже сказал, он прекрасно работает с HTTP (соединение успешно полностью но через HTTPS домен я получаю 404 в логах Django и если я пытаюсь подключиться через HTTPS домен, браузер ограничивает меня, говоря, что соединение небезопасно.