Django с каналами 2.1.1 Ошибка во время рукопожатия WebSocket 500 - PullRequest
0 голосов
/ 17 ноября 2018

Я работаю над проектом с использованием Django и каналов 2.1.1. Все отлично работает на моем домашнем ПК, но при развертывании в AWS я получаю ошибку: «Соединение WebSocket с« ws: // IP / ws /обби / »не удалось: Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 500 ', который происходит из строки в моем HTML, где я устанавливаю сокет чата:

var chatSocket = new WebSocket(
            'ws://' + window.location.host + '/ws/' + roomName + '/'
        );

Я использую nginx, daphne и gunicorn для запуска моего приложения Django на хост-компьютере. Nginx настроен на маршрутизацию запросов websocket к порту 9000, который обрабатывает Дафна, а gunicorn обрабатывает wsgi на порту 8000. Когда я пошел в учебное пособие по каналам 2, в нем есть раздел для проверки связи между канальным слоем и Redis с использованием Django Shell, который я тестировал и работает. Мой полный код можно увидеть на https://github.com/Rob-Fox/Chat2

Спасибо

Оказывается, ошибка 500 была вызвана тем, что я забыл установить и настроить Redis. Все работает сейчас.

Конфигурация Nginx:

server {
  listen 80;
  server_name IP;
  location = /favicon.ico { access_log off; log_not_found off; }
  location /static/ {
      root /home/ubuntu/Chat2;
  }
  location / {
      include proxy_params;
      proxy_pass http://unix:/home/ubuntu/Chat2/channelS.sock;
  }
  location /ws/ {
      proxy_pass http://0.0.0.0:9000;
      proxy_http_version 1.1;

      proxy_read_timeout 86400;
      proxy_redirect     off;

      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $server_name;
}
...