Веб-сокеты не работают в приложении Django на Heroku - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь запустить свое первое приложение django на heroku, мне удалось успешно развернуть приложение, и все работает, кроме веб-сокетов. Локально я использовал в каналах памяти и все работало. Я пробовал на героку как в каналах памяти, так и на redis и оба не работает. Я пробовал много разных конфигов, но я не мог найти никакого рабочего решения. Кроме того, логи герою не дают мне понять, что может быть не так ..

Ошибка, которую я получаю в браузере:

join_game.js:222 WebSocket connection to 'wss://battleships-war.herokuapp.com/game/20' failed: Error during WebSocket handshake: Unexpected response code: 404

Код клиента Javascript:

[Я пробовал префиксы ws и wss и оба вылетали]

var ws = new WebSocket((window.location.protocol == 'http') ? 'ws://' : 'wss://' +  window.location.host + '/game/' + gameId);

redis config в settings.py

 CHANNEL_LAYERS = {
     "default": {
         "BACKEND": "asgi_redis.RedisChannelLayer",
         "CONFIG": {
             "hosts": [('ec2-34-254-133-4.eu-west-1.compute.amazonaws.com', 26849)],
        },
         'ROUTING': 'battleships.routing.channel_routing',
    }, }

необязательно в конфигурации памяти, которая работала локально:

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'asgiref.inmemory.ChannelLayer',
        'ROUTING': 'battleships.routing.channel_routing',
    },
}

Redis учетные данные от heroku:

  • Хост: ec2-34-254-133-4.eu-west-1.compute.amazonaws.com
  • Пользователь
  • Порт 26849
  • Пароль
  • URI: redis: // h: p69877187246d4f0b36a94488814ee0b372234a2e943a61df0cdc84e4f85f35f2@ec2-34-254-133-4.eu-west-1.compute.amazonaws.com: 26849

PROCFILE:

web: gunicorn battleships.wsgi --preload

Герои логов:

2019-01-14T21: 06: 52.847189 + 00: 00 heroku [web.1]: состояние изменилось с до начала 2019-01-14T21: 07: 00.911326 + 00:00 heroku [web.1]: запуск обработать командой gunicorn battleships.wsgi --preload 2019-01-14T21: 07: 04.629926 + 00: 00 heroku [web.1]: состояние изменено с начало до 2019-01-14T21: 07: 06.453341 + 00:00 heroku [web.1]: процесс выход со статусом 0 2019-01-14T21: 07: 51.531270 + 00:00 геройку [роутер]: at = info method = GET path = "/ new_game /" хозяйничать = battleships-war.herokuapp.com request_id = 45707e08-cfd9-458c-8ce4-0f423acfb632 fwd = "80.49.199.124" dyno = web.1 connect = 0 мс сервис = 374 мс статус = 200 байт = 1307 протокол = http 2019-01-14T21: 07: 53.241606 + 00:00 геройка [роутер]: at = информация method = GET path = "/ new_game /" host = battleships-war.herokuapp.com request_id = a77411fc-2ab6-4be7-b4c9-e86d9440c3e1 fwd = "80.49.199.124" dyno = web.1 connect = 0ms service = 163ms status = 200 bytes = 1307 протокол = http 2019-01-14T21: 07: 57.454852 + 00:00 геройку [роутер]: at = информация method = POST path = "/ new_game /" host = battleships-war.herokuapp.com request_id = 76aab54e-4508-4485-90de-e66e7bb4715b fwd = "80.49.199.124" dyno = web.1 connect = служба 0 мс = состояние 31 мс = 200 байт = протокол 290 = http 2019-01-14T21: 08: 01.604730 + 00: 00 heroku [роутер]: at = информационный метод = GET путь = "/ game / 22 / dfgdfgdfgdf" host = battleships-war.herokuapp.com request_id = d4c9a31a-0dc6-436a-b35b-054e94770a5e fwd = "80.49.199.124" dyno = web.1 connect = 0 мс сервис = 30 мс статус = 200 байт = 1310 протокол = http 2019-01-14T21: 08: 02.002519 + 00:00 геройку [роутер]: at = информация method = GET path = "/ game / 22 / dfgdfgdfgdf / join" хозяйничать = battleships-war.herokuapp.com request_id = 3c682a1a-f203-493a-853d-4a4ff9cccaf8 fwd = "80.49.199.124" dyno = web.1 connect = 0ms service = 267ms status = 500 bytes = 149564 протокол = http 2019-01-14T21: 07: 03 + 00: 00 app [heroku-redis]: source = REDIS addon = redis-octagonal-92972 sample # active-connections = 1 образец # load-avg-1m = 0,09 образец # load-avg-5m = 0,115 sample # load-avg-15m = 0.125 sample # read-iops = 0 sample # write-iops = 0 выборка # общая-память = 15664336 кБ выборка # свободная память = 11855124 кБ sample # memory-cached = 1580208kB sample # memory-redis = 278200bytes sample # hit-rate = 0 sample # evicted-keys = 0 2019-01-14T21: 08: 07.295235 + 00: 00 heroku [роутер]: at = метод информации = GET путь = "/ game / 22 / dfgdfgdfgdf" host = battleships-war.herokuapp.com request_id = 789356b5-acb3-48e7-9dd1-be5250a7445d fwd = "80.49.199.124" dyno = web.1 connect = 0 мс сервис = 25 мс статус = 200 байт = 1310 протокол = HTTP

Может кто-нибудь помочь мне с этим или предложить другой подход?

...