Джанго каналы на хостинге heroku
Поскольку я не могу использовать Redis, я использовал другой слой канала, который является InMemoryChannelLayer
WSGI_APPLICATION = 'django_analytics.wsgi.application'
ASGI_APPLICATION = "django_analytics.routings.application"
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels.layers.InMemoryChannelLayer",
"CONFIG": {
},
},
}
Я его развернул, на героку но получаю ошибку
(индекс): 9 Соединение WebSocket с 'wss: //mkmnim.herokuapp.com/ws/chat/page/' не удалось: Ошибка при рукопожатии WebSocket: Неожиданный код ответа: 404
У меня это работает на моем локальном сервере, но я не могу сделать то же самое при размещении его в Интернете. Также мне придется делать что-то, связанное с Дафни? Изначально я использовал Redis и запускал Redis Server локально, но пока хостинг оплачивался, установка Redis была оплачена, поэтому я выбираю InMemoryChannelLayer ( каналы без канального слоя или любой другой бесплатный хостинг)
И что же мне делать?
django_analytics.routings.py
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from view_analytics import routing
application = ProtocolTypeRouter({
# Empty for now (http->django views is added by default)
'websocket': AuthMiddlewareStack(
URLRouter(
routing.websocket_urlpatterns
)
),
})
view_analytics.routings.py
from django.conf.urls import url
from . import consumers
websocket_urlpatterns = [
url(r'^ws/chat/room/$', consumers.ChatConsumer),
url(r'^ws/chat/page/$', consumers.PageConsumer),
]
page.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
let chatSocket = new WebSocket(
'wss://' + window.location.host +
'/ws/chat/' + 'page' + '/');
chatSocket.onmessage = function(e) {
const data = JSON.parse(e.data);
const message = data['message'];
console.log("message is"+ message)
};
chatSocket.onclose = function(e) {
console.error('Chat socket closed unexpectedly');
};
</script>
</body>
</html>
редактировать 1: также добавлены логи герою
2018-11-13T08:12:14.240908+00:00 heroku[router]: at=info method=GET path="/view_analytics/page_check/" host=mkmnim.herokuapp.com request_id=93802d36-fece-47b0-9e91-7f453d891f00 fwd="47.31.181.82" dyno=web.1 connect= служба 1 мс = состояние 60 мс = 200 байт = протокол 726 =https 2018-11-13T08:12:14.240275+00:00 app[web.1]: 10.41.198.116 - - [13/Nov/2018:08:12:14 +0000] "GET /view_analytics/page_check/ HTTP/1.1" 200 536 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/69.0.3497.81 Safari/537.36" 2018-11-13T08:12:15.342043+00:00 heroku[router]: at= информационный метод =GET path="/ws/chat/page/" host=mkmnim.herokuapp.com request_id=c2f225eb-1f88-4417-87fe-281b6dd6fd51 fwd="47.31.181.82" dyno=web.1 connect=1ms service=7ms status=404 байта =2534 protocol=https 2018-11-13T08:12: Приложение 15.340615+00:00 [web.1]: не найдено: /ws/chat/page/ 2018-11-13T08:12:15.341106+00:00 приложение [web.1]: 10.168.81.123 - - [13/Nov/2018:08:12:15 +0000] "GET /ws/chat/page/ HTTP/1.1" 404 2351 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome / 69.0.3497.81 Safari / 537.36 "