Джанго каналы на хостинге heroku - PullRequest
0 голосов
/ 13 ноября 2018

Поскольку я не могу использовать 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 геройку [роутер]: at = метод информации = GET путь = "/ 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 приложение [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 герой [роутер]: at = метод info = GET path = "/ ws / chat / page /" хозяйничать = 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 протокол = https 2018-11-13T08: 12: 15.340615 + 00: 00 приложение [web.1]: не найдено: / ws / chat / page / 2018-11-13T08: 12: 15.341106 + 00:00 app [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"

...