Я пытаюсь запустить свое первое приложение 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
Может кто-нибудь помочь мне с этим или предложить другой подход?